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(推荐)
echo "status" | hbase shell、hdfs dfsadmin -reporthbase shell 中执行 is_enabled 'your_table'hbase shell
snapshot 'your_table', 'snap_20251208_001'
list_snapshots 'snap_20251208'
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot \
-snapshot snap_20251208_001 \
-copy-to hdfs://namenode:8020/hbase/backup/snap_20251208_001
hdfs dfs -ls -R /hbase/backup/snap_20251208_001
# 异集群恢复前,先在目标集群创建与原表同结构的空表(列族一致)
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
hbase shell
disable 'your_table'
restore_snapshot 'snap_20251208_001'
enable 'your_table'
说明:ExportSnapshot 会将快照引用的 HFile 复制到目标路径,适合做跨集群迁移与长期归档。
三、方法二 Export/Import MapReduce(离线归档与迁移)
hbase org.apache.hadoop.hbase.mapreduce.Export your_table \
/hbase/export/your_table_20251208_full
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 与在线备份功能
hbase shell
# 目标表结构需提前创建
create 'your_table_bak', 'cf1', 'cf2'
copy_table 'your_table', 'your_table_bak'
# 全量备份
hbase backup create full backup_20251208 your_table
# 列出备份
hbase backup list
# 恢复
hbase backup restore backup_20251208
说明:CopyTable 仅适用于同集群;Backup/Restore 为 HBase 提供的在线备份能力,支持全量与增量,需集群启用该功能并配置备份目标(如 HDFS)。
五、备份策略与运维要点
list_snapshots、HDFS 目录与文件大小校验;定期做恢复演练,验证列族、TTL、版本数与数据一致性。