温馨提示×

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)。

二、备份操作

  • 快照(单表、在线)

    1. hbase shell 创建快照:
      hbase> snapshot ‘sourceTable’, ‘snapshot_20251223’
      如需避免内存刷新:hbase> snapshot ‘sourceTable’, ‘snapshot_20251223’, {SKIP_FLUSH => true}
    2. 列出/删除快照:list_snapshots / delete_snapshot ‘snapshot_20251223’
    3. 克隆为新表(可选):hbase> clone_snapshot ‘snapshot_20251223’, ‘new_table’
      说明:快照默认轻量,仅保存元数据与 HFile 指针,几乎不影响在线业务。
  • Export/Import(跨集群/按时间)

    1. 导出到 HDFS:
      hbase org.apache.hadoop.hbase.mapreduce.Export sourceTable /backup/hbase/sourceTable_20251223
      可加参数:versions=N、starttime=TS、endtime=TS 做增量导出。
    2. 导入到目标集群/表:
      hbase org.apache.hadoop.hbase.mapreduce.Import targetTable /backup/hbase/sourceTable_20251223
      说明:适合小规模数据迁移或按时间窗口恢复。
  • CopyTable(表间/集群间复制)

    1. 同集群复制为新表:
      hbase org.apache.hadoop.hbase.mapreduce.CopyTable --new.name=tableCopy sourceTable
    2. 跨集群复制(指定对端 ZK):
      hbase org.apache.hadoop.hbase.mapreduce.CopyTable \ –peer.adr=dstZK:2181:/hbase \ –new.name=tableCopy sourceTable
      说明:可按时间、列族过滤,适合局部修复与复制。
  • Backup/Restore(全量/增量)

    1. 全量备份:
      hbase backup create full hdfs:///backup/hbase/full_20251223
    2. 增量备份(基于上次备份):
      hbase backup create incremental hdfs:///backup/hbase/incr_20251224
    3. 查看备份列表:
      hbase backup list
      说明:适合生产环境的定期备份与回滚,需确保备份仓库可用。
  • HDFS 离线拷贝(停机窗口)

    1. 备份:
      hadoop distcp hdfs:///hbase hdfs:///backup/hbase/hbase_20251223
    2. 恢复:
      hadoop distcp hdfs:///backup/hbase/hbase_20251223 hdfs:///hbase
      说明:停机一致性更好,适合跨机房/跨版本迁移(注意版本兼容)。

三、恢复操作

  • 快照恢复(单表)

    1. hbase shell 禁用表:hbase> disable ‘sourceTable’
    2. 恢复到快照:hbase> restore_snapshot ‘snapshot_20251223’
    3. 启用表:hbase> enable ‘sourceTable’
      说明:恢复为快照时刻的数据视图;若启用复制(Replication),恢复后主从可能不一致,需先停同步再恢复。
  • Export/Import 恢复

    1. 目标表需存在且结构一致(列族一致)。
    2. 导入:
      hbase org.apache.hadoop.hbase.mapreduce.Import targetTable /backup/hbase/sourceTable_20251223
      说明:适合跨集群/按时间窗口回滚。
  • CopyTable 恢复

    1. 将问题数据从备份表/集群复制回原表:
      hbase org.apache.hadoop.hbase.mapreduce.CopyTable --peer.adr=srcZK:2181:/hbase \ –new.name=sourceTable backupTable
      说明:适合局部数据修复或回滚。
  • Backup/Restore 恢复

    1. 列出备份:hbase backup list
    2. 按备份 ID 恢复:
      hbase backup restore hdfs:///backup/hbase/full_20251223 <backup_id>
      说明:支持时间点回滚,适合生产环境快速恢复。
  • HDFS 拷贝恢复(离线)

    1. 先停 HBase:stop-hbase.sh
    2. 备份现有目录:hdfs dfs -mv /hbase /hbase_bak_$(date +%F)
    3. 恢复:hadoop distcp hdfs:///backup/hbase/hbase_20251223 /hbase
    4. 启动 HBase:start-hbase.sh
      说明:一致性高,适合灾备恢复。
  • 仅元数据/Region 异常时的修复(hbck)

    1. 修复元数据:hbase hbck -fixMeta table_20180811
    2. 分配 Region:hbase hbck -fixAssignments table_20180811
    3. 若存在 Region 重叠:hbase hbck -fixHdfsOverlaps table_20180811
    4. 复核: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 抽样、校验和),确保备份可用。

0