HBase备份恢复在CentOS上怎么操作
小樊
33
2025-12-23 17:13:42
在 CentOS 上执行 HBase 备份与恢复
一、常用方案与适用场景
- 快照 Snapshot:对单表进行时间点备份,轻量、快速,适合日常点恢复与克隆测试环境。支持在线创建与恢复。
- Export/Import:将表数据导出为 HDFS 的 SequenceFile,可跨集群迁移,支持按时间范围导出,适合小规模或跨环境迁移。
- CopyTable:基于 Scan/Put 在表间或集群间复制数据,可指定时间区间、列族、目标表名,适合局部数据修复或同构集群迁移。
- Backup/Restore 工具:HBase 提供的备份框架,支持全量与增量备份,适合生产环境的定期备份与快速回滚。
- HDFS 层面 DistCp/拷贝:在停机或维护窗口对 HBase 根目录做离线全量拷贝,适合跨集群/跨机房迁移或灾备。
- 一致性修复 hbck:当数据文件异常或元数据不一致时,用于检测与修复(如 fixMeta、fixAssignments、fixHdfsOverlaps)。
二、备份操作
-
快照(单表、在线)
- 在 hbase shell 创建快照:
hbase> snapshot ‘sourceTable’, ‘snapshot_20251223’
如需避免内存刷新:hbase> snapshot ‘sourceTable’, ‘snapshot_20251223’, {SKIP_FLUSH => true}
- 列出/删除快照:list_snapshots / delete_snapshot ‘snapshot_20251223’
- 克隆为新表(可选):hbase> clone_snapshot ‘snapshot_20251223’, ‘new_table’
说明:快照默认轻量,仅保存元数据与 HFile 指针,几乎不影响在线业务。
-
Export/Import(跨集群/按时间)
- 导出到 HDFS:
hbase org.apache.hadoop.hbase.mapreduce.Export sourceTable /backup/hbase/sourceTable_20251223
可加参数:versions=N、starttime=TS、endtime=TS 做增量导出。
- 导入到目标集群/表:
hbase org.apache.hadoop.hbase.mapreduce.Import targetTable /backup/hbase/sourceTable_20251223
说明:适合小规模数据迁移或按时间窗口恢复。
-
CopyTable(表间/集群间复制)
- 同集群复制为新表:
hbase org.apache.hadoop.hbase.mapreduce.CopyTable --new.name=tableCopy sourceTable
- 跨集群复制(指定对端 ZK):
hbase org.apache.hadoop.hbase.mapreduce.CopyTable \
–peer.adr=dstZK:2181:/hbase \
–new.name=tableCopy sourceTable
说明:可按时间、列族过滤,适合局部修复与复制。
-
Backup/Restore(全量/增量)
- 全量备份:
hbase backup create full hdfs:///backup/hbase/full_20251223
- 增量备份(基于上次备份):
hbase backup create incremental hdfs:///backup/hbase/incr_20251224
- 查看备份列表:
hbase backup list
说明:适合生产环境的定期备份与回滚,需确保备份仓库可用。
-
HDFS 离线拷贝(停机窗口)
- 备份:
hadoop distcp hdfs:///hbase hdfs:///backup/hbase/hbase_20251223
- 恢复:
hadoop distcp hdfs:///backup/hbase/hbase_20251223 hdfs:///hbase
说明:停机一致性更好,适合跨机房/跨版本迁移(注意版本兼容)。
三、恢复操作
-
快照恢复(单表)
- 在 hbase shell 禁用表:hbase> disable ‘sourceTable’
- 恢复到快照:hbase> restore_snapshot ‘snapshot_20251223’
- 启用表:hbase> enable ‘sourceTable’
说明:恢复为快照时刻的数据视图;若启用复制(Replication),恢复后主从可能不一致,需先停同步再恢复。
-
Export/Import 恢复
- 目标表需存在且结构一致(列族一致)。
- 导入:
hbase org.apache.hadoop.hbase.mapreduce.Import targetTable /backup/hbase/sourceTable_20251223
说明:适合跨集群/按时间窗口回滚。
-
CopyTable 恢复
- 将问题数据从备份表/集群复制回原表:
hbase org.apache.hadoop.hbase.mapreduce.CopyTable --peer.adr=srcZK:2181:/hbase \
–new.name=sourceTable backupTable
说明:适合局部数据修复或回滚。
-
Backup/Restore 恢复
- 列出备份:hbase backup list
- 按备份 ID 恢复:
hbase backup restore hdfs:///backup/hbase/full_20251223 <backup_id>
说明:支持时间点回滚,适合生产环境快速恢复。
-
HDFS 拷贝恢复(离线)
- 先停 HBase:stop-hbase.sh
- 备份现有目录:hdfs dfs -mv /hbase /hbase_bak_$(date +%F)
- 恢复:hadoop distcp hdfs:///backup/hbase/hbase_20251223 /hbase
- 启动 HBase:start-hbase.sh
说明:一致性高,适合灾备恢复。
-
仅元数据/Region 异常时的修复(hbck)
- 修复元数据:hbase hbck -fixMeta table_20180811
- 分配 Region:hbase hbck -fixAssignments table_20180811
- 若存在 Region 重叠:hbase hbck -fixHdfsOverlaps table_20180811
- 复核:hbase hbck table_20180811,状态应为 Status: OK
说明:用于数据目录迁移或异常关闭后的修复。
四、注意事项与最佳实践
- 权限与目录:HBase 数据在 HDFS 上,备份/恢复涉及的路径需保证 HDFS 权限与所属用户组正确(如 hbase:hadoop),必要时使用 hdfs dfs -chown/chmod。
- 复制与一致性:启用 Replication 时,快照/导入等方式恢复后主从可能不一致,建议先停同步、恢复到一致时间点后再重建同步。
- 版本兼容:跨大版本迁移谨慎,尤其是 HBase 2.x 之后部分修复命令行为变化,优先使用快照/Export-Import/Backup 框架。
- 影响评估:CopyTable/Export/Import 会触发 Scan/MR 作业,请在业务低峰期执行并控制带宽/并发。
- 校验与演练:定期做恢复演练与校验(如 count、scan 抽样、校验和),确保备份可用。