Debian系统下HBase数据备份的常见方法
HBase提供了专门的hbase backup命令行工具,支持全量备份和增量备份,适用于需要集中管理备份的场景。
hbase backup create full /path/to/backup/root --clusterId=my-cluster-idfull表示全量备份,/path/to/backup/root是备份存储的根目录,my-cluster-id是集群唯一标识。hbase backup create incremental /path/to/backup/root --clusterId=my-cluster-idhbase restore命令恢复备份数据,例如:hbase restore /path/to/backup/root --clusterId=my-cluster-idsudo systemctl stop hbase-master、sudo systemctl stop hbase-regionserver),恢复完成后再启动服务。HBase的数据通常存储在HDFS上,通过HDFS的快照(Snapshot)功能可实现数据的只读备份,具有高性能、低开销的特点(仅记录元数据变化,不影响数据写入)。
/hbase)设置快照权限:hdfs dfsadmin -allowSnapshot /hbasehdfs dfs -createSnapshot /hbase hbase_backup_snapshothbase_backup_snapshot是快照名称。hdfs dfs -deleteSnapshot /hbase hbase_backup_snapshothdfs dfs -cp /hbase/.snapshot/hbase_backup_snapshot/* /hbase/HBase Shell提供了简单易用的命令,适合单表或少量数据的快速备份。
hbase> copy_table 'source_table', 'destination_table', {COPY_TO => 'file:///path/to/backup/dir'}source_table是源表名,destination_table是目标表名,file:///path/to/backup/dir是本地备份目录。hbase org.apache.hadoop.hbase.mapreduce.Export source_table /hdfs/backup/dirImport命令恢复:hbase org.apache.hadoop.hbase.mapreduce.Import destination_table /hdfs/backup/dir。借助第三方工具可实现自动化、增量备份、远程存储等高级功能,适合生产环境的大规模集群。
hadoop distcp hdfs:///hbase hdfs:///backup/hbasehadoop distcp hdfs:///backup/hbase hdfs:///hbase。./xtrabackup --backup --target-dir=/backup/hbase --hbase-home=/usr/lib/hbase--prepare)、复制回原目录(--copy-back)。通过HBase的Replication功能实现集群间的实时数据同步,适合异地容灾或多集群数据共享场景。
hbase-site.xml中启用Replication:<property><name>hbase.replication</name><value>true</value></property>;REPLICATION_SCOPE为1(表示开启复制):hbase> alter 'my_table', {NAME => 'cf1', REPLICATION_SCOPE => '1'};hbase> add_peer '1', "zk1:2181:/hbase_backup"(zk1是目标集群的ZooKeeper地址);