Debian 上 HBase 备份与恢复实操指南
一 备份方法总览与选择
二 方法一 表级快照 Snapshot 与 ExportSnapshot(推荐)
hbase> snapshot 'tbl_bak_20251205', 'mytbl'
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot \
-snapshot 'tbl_bak_20251205' \
-copy-to hdfs://namenode:8020/hbase/backup/tbl_bak_20251205
hadoop distcp -m 50 \
hdfs://namenode:8020/hbase/backup/tbl_bak_20251205 \
hdfs://backup-nn:8020/hbase/backup/tbl_bak_20251205
hbase org.apache.hadoop.hbase.snapshot.ImportSnapshot \
-snapshot 'tbl_bak_20251205' \
-copy-from hdfs://backup-nn:8020/hbase/backup/tbl_bak_20251205 \
-target-namespace default
三 方法二 Export/Import 与 CopyTable(逻辑备份与复制)
# 导出:按时间窗口导出到 HDFS
hbase org.apache.hadoop.hbase.mapreduce.Export \
mytbl \
hdfs://namenode:8020/hbase/export/mytbl_20251205 \
3 \
1733347200000 \
1733433599000
# 导入:到同/异集群目标表(目标表需先建好且结构兼容)
hbase org.apache.hadoop.hbase.mapreduce.Import \
mytbl \
hdfs://namenode:8020/hbase/export/mytbl_20251205
# 同集群
hbase org.apache.hadoop.hbase.mapreduce.CopyTable \
--families=cf1,cf2 mytbl mytbl_bak
# 跨集群(指定对端 ZK 地址)
hbase org.apache.hadoop.hbase.mapreduce.CopyTable \
--peer.adr=zk1:2181,zk2:2181,zk3:2181:/hbase \
--families=cf1:cf1_new,cf2 mytbl mytbl_bak
四 方法三 HDFS 层备份 DistCp 或冷拷贝(大规模与灾备)
hadoop distcp -m 100 -update -delete \
hdfs://nn1:8020/hbase \
hdfs://backup-nn:8020/hbase_bak_20251205
# Debian 侧停 HBase
sudo systemctl stop hbase-master hbase-regionserver
# HDFS 层面拷贝
hdfs dfs -mkdir -p /hbase_bak_20251205
hdfs dfs -cp -r /hbase /hbase_bak_20251205
# 恢复(如需)
hdfs dfs -rm -r /hbase
hdfs dfs -cp -r /hbase_bak_20251205/hbase /hbase
# 启动 HBase
sudo systemctl start hbase-master hbase-regionserver
五 备份策略与运维要点