Ubuntu下HBase数据恢复实战指南
一、先判断故障类型与准备
hdfs dfs -cp -r /hbase /hbase_backup_$(date +%F_%T);同时备份本地配置与日志。echo stat | nc zk1 2181),避免修复时元数据再次变更。二、常用恢复路径与命令
快照恢复(最安全、优先方案)
hbase shell> list_snapshotsdisable 'tbl';若表已不存在,先按原结构建表:create 'tbl', {NAME => 'cf1'}, {NAME => 'cf2'}hbase shell> restore_snapshot 'snap_tbl'scan 'tbl', {LIMIT => 10}、count 'tbl'ExportSnapshot 全量备份/迁移恢复(跨集群/跨环境)
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot snap_tbl -copy-to hdfs://nn:8020/backup/snap_tblhbase org.apache.hadoop.hbase.snapshot.ImportSnapshot -snapshot snap_tbl -copy-from hdfs://nn:8020/backup/snap_tbl -target hbase手工拷贝 HFile 到新表(HFile仍完整时)
create 'tbl_rec', {NAME => 'cf1', COMPRESSION => 'SNAPPY'}disable 'tbl_rec'hdfs dfs -mv /hbase/data/default/tbl/region-xxxx/cf1/hfile-*/ /hbase/data/default/tbl_rec/region-xxxx/cf1/enable 'tbl_rec';如HFile多且跨region,建议写脚本批量处理。count 'tbl_rec'、抽样scan。一致性修复与Region上线(hbck)
hbase hbckhbase hbck -repair(会尝试分配缺失region、修复引用与元数据)导入/导出 MR 作业(Export/Import,适合离线批量恢复)
hbase org.apache.hadoop.hbase.mapreduce.Export tbl /backup/tbl_exporthbase org.apache.hadoop.hbase.mapreduce.Import tbl /backup/tbl_export三、场景化操作建议
hbck诊断,再-repair;必要时结合日志与HDFS目录手工扶正region。ExportSnapshot/ImportSnapshot,避免在线集群抖动。Export/Import MR作业,分批导入并监控任务与数据一致性。四、验证与回滚
hbase shell> status 'simple';集群可用后再做业务侧校验。count 'tbl'(大数据量表可用抽样或估算);对比备份/快照时的基线。scan 'tbl', {LIMIT => 100}、get 'tbl', 'rowkey1',核对关键行/列。/hbase/logs/下HMaster/RegionServer日志,确认无异常Compaction/Flush/Region分裂失败。五、预防与最佳实践