适用于 Debian 的 HBase 备份策略与落地方案
一、策略总览与选型
| 方式 | 在线/离线 | 速度与开销 | 适用场景 | 关键要点 |
|---|---|---|---|---|
| Snapshot | 在线 | 低开销(元数据+HFile引用) | 快速时间点备份、克隆测试环境 | 需启用快照;克隆/恢复便捷;恢复需 disable 表 |
| Replication | 在线 | 近实时 | 主从容灾、跨机房近实时同步 | 基于 WAL 的异步复制;历史数据需另行导入 |
| Export/Import | 在线导出/导入 | 中(MR 扫描与写入) | 跨集群迁移、按时间窗口增量备份 | 支持时间范围;默认仅最新版本,可指定多版本 |
| CopyTable | 在线 | 中(scan+put) | 同/跨集群表间拷贝、列族重映射 | 需先建目标表;支持时间/行区间、列族映射 |
| DistCp | 离线 | 取决于数据量 | 全量冷备、跨集群/跨存储迁移 | 需 disable 表或停写;直接拷贝 HDFS 文件 |
上述方式及要点为 HBase 官方与社区常用实践,适用于 Debian 部署环境。
二、推荐组合方案
三、关键操作命令示例
<property>
<name>hbase.snapshot.enabled</name>
<value>true</value>
</property>
# hbase shell
snapshot 'test', 'snap_20260102_0000'
list_snapshots
clone_snapshot 'snap_20260102_0000', 'test_clone'
disable 'test'
restore_snapshot 'snap_20260102_0000'
enable 'test'
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot \
-snapshot snap_20260102_0000 \
-copy-to hdfs://backup-nn:8020/backup/hbase/snap_20260102_0000
<property>
<name>hbase.replication</name>
<value>true</value>
</property>
# 主集群 hbase shell
add_peer '1', 'zk1:2181,zk2:2181,zk3:2181:/hbase'
disable 'your_table'
alter 'your_table', {NAME => 'cf', REPLICATION_SCOPE => '1'}
enable 'your_table'
hbase org.apache.hadoop.hbase.mapreduce.Export \
-D hbase.mapreduce.scan.row.start=... \
-D hbase.mapreduce.scan.row.stop=... \
-D hbase.export.version=3 \
your_table /backup/hbase/export/your_table_20260102
hbase org.apache.hadoop.hbase.mapreduce.Import your_table /backup/hbase/export/your_table_20260102
hbase org.apache.hadoop.hbase.mapreduce.CopyTable \
--new.name=test_copy test
hbase org.apache.hadoop.hbase.mapreduce.CopyTable \
--peer.adr=dstZK:2181:/hbase \
--families=cf1:cf1_new,cf2 test
# 备份
hadoop distcp hdfs://src-nn:8020/hbase /backup/hbase_20260102
# 恢复
hadoop distcp /backup/hbase_20260102/hbase hdfs://dst-nn:8020/
以上命令覆盖了快照、复制、导出/导入、CopyTable 与 DistCp 的常用用法,可直接在 Debian 节点上执行(确保 HBase/Hadoop 环境变量与配置正确)。
四、恢复流程与注意事项