Ubuntu上HBase数据备份方法
快照是HBase最常用的备份方式,它通过记录表的元数据和HFiles信息实现,创建时不影响表的正常读写,性能开销极低。
snapshot '表名', '快照名'(例如snapshot 'user_table', 'user_snapshot_202510')。list_snapshots确认快照是否存在。disable '表名';restore_snapshot '快照名';enable '表名'。delete_snapshot '快照名'释放存储空间。HBase自带的hbase backup命令支持全量和增量备份,需提前配置hbase-site.xml:
hbase-site.xml中添加:<property><name>hbase.backup.enable</name><value>true</value></property>
<property><name>hbase.backup.dir</name><value>/hbase/backup</value></property>
重启HBase使配置生效:sudo systemctl restart hbase-master、sudo systemctl restart hbase-regionserver。hbase backup create full hdfs://namenode:9000/hbase/backup/full_backup(将全量数据备份到指定HDFS路径)。hbase backup create incremental hdfs://namenode:9000/hbase/backup/incremental_backup -t 表名(仅备份自上次备份以来的变更数据)。HBase数据存储在HDFS中,可通过DistCp(分布式复制工具)将HBase数据目录复制到异地或本地存储,实现高可靠性备份。
hadoop distcp hdfs://namenode:9000/hbase hdfs://backup-namenode:9000/hbase_backup(将HBase数据从源集群复制到备份集群)。hadoop distcp hdfs://backup-namenode:9000/hbase_backup hdfs://namenode:9000/hbase(将备份数据复制回原集群)。EXPORT TABLE 表名 TO '/hdfs/backup/表名_backup';IMPORT TABLE 表名 FROM '/hdfs/backup/表名_backup'。./xtrabackup --backup --target-dir=/backup/hbase --hbase-home=/usr/local/hbase;./xtrabackup --prepare --target-dir=/backup/hbase(准备备份)、./xtrabackup --copy-back --target-dir=/backup/hbase(复制回原目录)。/hbase/WALs/目录下的日志文件复制到备份存储(如HDFS),恢复时将WAL日志复制回原目录,HBase启动时会自动重放未提交的操作。hbase.backup.strategy.differential.window.hours参数配置窗口大小。