HBase在Debian上的数据恢复
导读:HBase在Debian上的数据恢复指南 一 恢复前准备与故障定位 保护现场:先对现有环境与数据进行快照或拷贝,尤其是HDFS上的**/hbase**目录与ZooKeeper元数据目录,避免二次损坏。示例:hdfs dfs -cp -r...
HBase在Debian上的数据恢复指南
一 恢复前准备与故障定位
- 保护现场:先对现有环境与数据进行快照或拷贝,尤其是HDFS上的**/hbase**目录与ZooKeeper元数据目录,避免二次损坏。示例:
hdfs dfs -cp -r /hbase /hbase_bak_$(date +%F_%T)。 - 快速定位:确认故障类型(如HMaster/RegionServer宕机、数据文件损坏、配置错误),查看**/var/log/hbase/或$HBASE_HOME/logs/**下的日志,优先排查异常堆栈与Region一致性报错。
- 恢复窗口:尽量在业务低峰期执行恢复,减少对线上影响;恢复前确认备份与当前HBase版本兼容,避免不兼容导致恢复失败。
- 基本检查:在hbase shell中执行
status 'simple'与list,确认集群与表状态;必要时先停写相关表或应用。
二 场景化恢复步骤
-
误删数据且尚未发生Major Compaction
- 在hbase shell为涉及的列族开启保留已删除单元:
alter 'tbl', { NAME => 'cf', KEEP_DELETED_CELLS => TRUE}。 - 使用raw模式与时间窗口扫描已删除数据:
scan 'tbl', { RAW => true, TIMERANGE => [ts_start, ts_end]}。 - 将扫描结果重新写入(Put)到目标表或新表,完成“捞回”。
- 校验无误后,关闭保留:
alter 'tbl', { NAME => 'cf', KEEP_DELETED_CELLS => FALSE},避免空间膨胀与查询性能下降。
说明:Delete在HBase中是写入删除标记,只有Major Compaction才会真正清理;若已触发Major Compaction或设置了TTL过期,此方法可能无效。
- 在hbase shell为涉及的列族开启保留已删除单元:
-
使用快照恢复(时间点恢复)
- 列出快照:
list_snapshots。 - 恢复到原表或克隆新表:
clone_snapshot 'snap_20241201', 'tbl_restore'或restore_snapshot 'snap_20241201'(恢复前建议对目标表做备份/禁用)。 - 校验数据一致性与行数:
count 'tbl_restore'。
说明:快照为一致性视图、轻量且对在线业务影响小,适合误删、误改后的快速回滚。
- 列出快照:
-
使用Export/Import导出导入(跨集群/跨环境迁移与恢复)
- 全量导出:
hbase org.apache.hadoop.hbase.mapreduce.Export 'tbl' /backup/hbase_tbl_20241201。 - 目标环境先建表(结构一致):
create 'tbl', 'cf1', 'cf2'。 - 导入:
hbase org.apache.hadoop.hbase.mapreduce.Import 'tbl' /backup/hbase_tbl_20241201。
说明:基于MapReduce,适合跨集群迁移、逻辑备份与细粒度恢复;大数据量时建议按时间分片导出。
- 全量导出:
-
使用DistCp复制HBase目录(整库/整表物理迁移)
- 源端停写或确保一致性窗口:
stop-hbase.sh(或暂停写入)。 - 并行拷贝:
hadoop distcp -m 50 hdfs://src/hbase /hbase_bak。 - 目标端替换/恢复目录后启动HBase:
start-hbase.sh。
说明:速度快、适合整库迁移;若源端未停写,可能带来不一致,需谨慎评估。
- 源端停写或确保一致性窗口:
-
使用HFile直拷恢复(按HFile粒度找回历史文件)
- 在HDFS定位目标HFile:
hdfs dfs -ls /hbase/data/default/tbl/region_x/cf/。 - 将所需HFile移动到目标表对应目录(保持region/family层级):
hdfs dfs -mv ... /hbase/data/default/tbl_restore/...。 - 重启HBase或执行
major_compact 'tbl_restore'促使加载新HFile,并校验数据。
说明:适合找回特定HFile或部分Region的数据,粒度最细。
- 在HDFS定位目标HFile:
-
一致性修复与Region问题处理
- 检查:
hbase hbck。 - 修复:
hbase hbck -repair(修复前务必做好备份)。 - 针对HMaster/RegionServer宕机,先确保ZooKeeper正常,再重启相应进程并观察日志与UI。
说明:用于Region重叠、缺失、引用异常等一致性问题。
- 检查:
三 恢复效率与风险控制
- 提升效率
- 优先使用快照进行时间点恢复,速度快、影响小。
- 定期做全量+增量备份(如每周全量、每日增量),并定期演练恢复流程验证可用性。
- 大数据量迁移/恢复优先选择DistCp/Export-Import的并行能力,合理设置并发与分片。
- 风险控制
- 恢复前对现有目录与ZooKeeper做一次备份,避免操作失误扩大影响。
- 恢复期间尽量停写或切流,并在低峰期执行。
- 严格保证备份与HBase版本兼容;恢复完成后及时关闭KEEP_DELETED_CELLS、执行major_compact回收空间。
四 常用命令清单
- 快照
- 创建:
snapshot 'tbl', 'snap_20241201' - 克隆:
clone_snapshot 'snap_20241201', 'tbl_restore' - 恢复:
restore_snapshot 'snap_20241201' - 列表:
list_snapshots
- 创建:
- 导出/导入
- 导出:
hbase org.apache.hadoop.hbase.mapreduce.Export 'tbl' /backup/hbase_tbl_20241201 - 导入:
hbase org.apache.hadoop.hbase.mapreduce.Import 'tbl' /backup/hbase_tbl_20241201
- 导出:
- HFile定位与拷贝
- 列目录:
hdfs dfs -ls /hbase/data/default/tbl/region_x/cf/ - 移动HFile:
hdfs dfs -mv < src_hfile> < dst_tbl_region_cf> /
- 列目录:
- 一致性修复
- 检查/修复:
hbase hbck/hbase hbck -repair
- 检查/修复:
- 集群运维
- 启停:
start-hbase.sh/stop-hbase.sh - 状态:
status 'simple'
- 启停:
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: HBase在Debian上的数据恢复
本文地址: https://pptw.com/jishu/773731.html
