温馨提示×

HBase数据备份Ubuntu上怎么做

小樊
40
2025-12-08 19:44:57
栏目: 智能运维

Ubuntu 上 HBase 数据备份实操指南

一、常用备份方式对比

方法 适用场景 停机要求 优点 关键命令
Export/Import MapReduce 跨集群迁移、离线归档、跨版本恢复 建议短暂停写 通用、可落地到任意 HDFS/本地 hbase org.apache.hadoop.hbase.mapreduce.Export / Import
Snapshot 快照 + ExportSnapshot 同/跨集群快速备份与回滚、极小停机 通常无需停机 轻量、秒级创建、可复制到其他集群 snapshot 't','s'hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot
CopyTable 同集群内表级复制/备份 建议短暂停写 简单、无需额外组件 copy_table 'src','dst'
Backup/Restore(若启用 HBase Backup 功能) 生产在线备份、策略化保留 通常无需停机 在线、可增量、可计划 hbase backup create full <name> <tables>
说明:HBase 的快照基于 LSM 结构,快照是元数据指针集合,不复制实际数据块,恢复时按指针定位 HFile,效率高。CopyTable 适合同集群表级备份;Export/Import 适合离线归档与迁移;若集群启用了 HBase 的 Backup 功能,可用其做在线全量/增量备份。

二、方法一 Snapshot + ExportSnapshot(推荐)

  • 前置检查
    • 确认 HBase 与 HDFS 正常:echo "status" | hbase shellhdfs dfsadmin -report
    • 确认目标表处于 ENABLED 状态:hbase shell 中执行 is_enabled 'your_table'
  • 步骤
    1. 创建快照(秒级)
      hbase shell
      snapshot 'your_table', 'snap_20251208_001'
      list_snapshots 'snap_20251208'
      
    2. 将快照导出到备份目录(HDFS 或远端 HDFS)
      hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot \
        -snapshot snap_20251208_001 \
        -copy-to hdfs://namenode:8020/hbase/backup/snap_20251208_001
      
    3. 校验导出结果
      hdfs dfs -ls -R /hbase/backup/snap_20251208_001
      
    4. 恢复(同/异集群)
      # 异集群恢复前,先在目标集群创建与原表同结构的空表(列族一致)
      hbase shell
      create 'your_table', 'cf1', 'cf2'
      
      # 执行导入
      hbase org.apache.hadoop.hbase.snapshot.ImportSnapshot \
        -snapshot snap_20251208_001 \
        -copy-from hdfs://namenode:8020/hbase/backup/snap_20251208_001
      
    5. 回滚到快照(可选)
      hbase shell
      disable 'your_table'
      restore_snapshot 'snap_20251208_001'
      enable 'your_table'
      

说明:ExportSnapshot 会将快照引用的 HFile 复制到目标路径,适合做跨集群迁移与长期归档。

三、方法二 Export/Import MapReduce(离线归档与迁移)

  • 全量导出到 HDFS
    hbase org.apache.hadoop.hbase.mapreduce.Export your_table \
      /hbase/export/your_table_20251208_full
    
  • 从 HDFS 导入到目标表(目标表需先建好相同列族)
    hbase shell
    create 'your_table_bak', 'cf1', 'cf2'
    
    hbase org.apache.hadoop.hbase.mapreduce.Import your_table_bak \
      /hbase/export/your_table_20251208_full
    
  • 增量导出(基于时间戳,左闭右开)
    # 导出 [ts_start, ts_end) 之间的数据
    hbase org.apache.hadoop.hbase.mapreduce.Export your_table \
      /hbase/export/your_table_20251208_incr \
      -starttime <ts_start_in_ms> -stoptime <ts_end_in_ms>
    

说明:适合离线备份/迁移与跨版本恢复;大数据量时请评估 MapReduce 资源与作业超时设置。

四、方法三 CopyTable 与在线备份功能

  • CopyTable(同集群表级备份/克隆)
    hbase shell
    # 目标表结构需提前创建
    create 'your_table_bak', 'cf1', 'cf2'
    copy_table 'your_table', 'your_table_bak'
    
  • Backup/Restore(若已启用 HBase Backup 功能)
    # 全量备份
    hbase backup create full backup_20251208 your_table
    
    # 列出备份
    hbase backup list
    
    # 恢复
    hbase backup restore backup_20251208
    

说明:CopyTable 仅适用于同集群;Backup/Restore 为 HBase 提供的在线备份能力,支持全量与增量,需集群启用该功能并配置备份目标(如 HDFS)。

五、备份策略与运维要点

  • 定期与分层:日常用 Snapshot 做快速回滚与克隆;每周/每月做 ExportSnapshot/Export 到独立 HDFS 目录或异地存储;关键时点(升级/变更前)必做快照与导出双保险。
  • 校验与演练:每次备份后进行 list_snapshots、HDFS 目录与文件大小校验;定期做恢复演练,验证列族、TTL、版本数与数据一致性。
  • 一致性建议:对在线业务,导出/复制前尽量降低写入速率或短暂停写;对大表分批次处理,避免一次性大作业影响集群稳定性。
  • 元数据与 WAL:快照主要覆盖表数据文件;如需连同 HBase 元数据与 WAL 做更完整的保护,可额外归档 /hbase/.archive/hbase/.logs 等目录(需按集群规划谨慎操作)。

0