Debian 上 HBase 的备份策略与落地实践
一 核心策略与适用场景
- 快照 Snapshot:对表创建时间点只读副本,仅记录元数据与 HFile 列表,几乎不影响在线业务;适合日常备份与时点回滚。支持克隆到新表、导出到 HDFS 归档。恢复时原表需 disable。
- Export/Import:将表数据导出到 HDFS(支持按时间范围导出),在目标集群 Import 导入;适合跨集群迁移与按时间窗口的增量备份/恢复。
- CopyTable:在同一或跨集群复制表,可按时间/行区间、列族映射、改名等;适合热备、表结构变更演练与小范围数据修复。
- Replication:基于 WAL 的主从实时同步,用于灾备与近实时读扩展;注意其是最终一致性,不等同于离线备份。
- HDFS 层面备份(DistCp):直接复制底层 HDFS 数据目录;适合跨集群/异地容灾与大规模离线备份,通常需表 disable 或置于维护窗口以保证一致性。
- WAL 与容错:WAL 用于节点故障时的崩溃恢复,属于高可用机制,不能替代跨集群/跨地域的备份。
二 推荐备份策略组合
- 日常保护与快速回滚:对关键表按日/周做Snapshot;将快照ExportSnapshot 到 HDFS 归档,并定期克隆快照到演练表验证可用性。
- 跨集群/异地容灾:开启Replication做近实时同步;同时定期用 DistCp 对底层 HDFS 做离线快照备份,两者结合覆盖“逻辑备份+物理备份”。
- 按时间窗口恢复:使用 Export/Import 按 starttime/endtime 做增量导出/导入,用于误删或错误计算后的区间回滚。
- 同/跨集群热备与迁移:用 CopyTable 做热备、结构映射与小批量修复;跨集群复制时通过 –peer.adr 指定目标 ZK。
三 关键操作示例
- 快照与归档
- 创建快照:
hbase snapshot create -n test_snap -t test
- 归档到 HDFS:
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot test_snap -copy-to hdfs://backup/hbase/snapshots/test_snap
- 克隆到新表:
clone_snapshot 'test_snap','test_restore'
- 原表时点恢复(需 disable):
restore_snapshot 'test_snap'
- Export/Import 增量备份与恢复
- 导出时间窗数据:
hbase org.apache.hadoop.hbase.mapreduce.Export test hdfs://backup/hbase/export/test -starttime <ts1> -endtime <ts2>
- 目标集群导入:
hbase org.apache.hadoop.hbase.mapreduce.Import test hdfs://backup/hbase/export/test
- CopyTable 热备/跨集群复制
- 同集群改名复制:
hbase org.apache.hadoop.hbase.mapreduce.CopyTable --new.name=test_copy srcTable
- 跨集群复制:
hbase org.apache.hadoop.hbase.mapreduce.CopyTable --peer.adr=dstZK:2181:/hbase srcTable
- DistCp 物理备份(谨慎使用)
- 备份:
hadoop distcp hdfs:///hbase /backup/hbase
- 恢复:
hadoop distcp /backup/hbase hdfs:///hbase
四 计划与运维要点
- 频率与窗口:建议至少每周一次全量(快照/Export 全量),每日增量(Export 时间窗或 CopyTable 时间窗);在业务低峰期执行,降低对读写延迟的影响。
- 保留与异地:按 RPO/RTO 设定保留周期(如近 7 天快照在线、30–90 天归档到低成本存储),并做跨机房/跨地域副本。
- 自动化与校验:用 cron/调度平台编排备份;落地后做定期恢复演练与校验和/行数对比,验证可用性。
- 一致性注意:快照对在线业务影响小;Export/Import 与 CopyTable 基于扫描,可能受Region 分裂/压缩影响,建议在低峰或设置扫描限流;DistCp 为保证一致性,常需表 disable 或进入维护窗口。