温馨提示×

linux hbase怎么备份

小樊
40
2026-10-28 03:47:47
栏目: 智能运维

在 Linux 环境下,HBase 的备份方式主要取决于你是「全量备份」「增量备份」还是「迁移需求」。下面按常用程度给你系统讲一下。


一、最常用:HBase 快照备份(推荐 ✅)

1️⃣ 创建快照

hbase shell
snapshot '表名', '快照名'

示例:

snapshot 'user_table', 'user_table_snap_20260121'

2️⃣ 查看快照

list_snapshots

3️⃣ 从快照恢复

disable 'user_table'
restore_snapshot 'user_table_snap_20260121'
enable 'user_table'

4️⃣ 导出快照到 HDFS(跨集群备份)

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot \
-snapshot user_table_snap_20260121 \
-copy-to hdfs://backup-cluster:8020/hbase \
-copy-from hdfs://prod-cluster:8020/hbase

✅ 优点:

  • 不影响线上读写
  • 速度快
  • 官方推荐

二、表级导出(冷备 / 迁移)

1️⃣ Export / Import 方式

hbase org.apache.hadoop.hbase.mapreduce.Export \
user_table \
hdfs:///backup/user_table_20260121

恢复:

hbase org.apache.hadoop.hbase.mapreduce.Import \
user_table \
hdfs:///backup/user_table_20260121

⚠️ 缺点:

  • 慢
  • 占用 MapReduce 资源

三、HDFS 层备份(物理备份)

1️⃣ 停止 HBase(或 RegionServer)

stop-hbase.sh

2️⃣ 备份 HDFS 数据

hdfs dfs -copyToLocal /hbase /backup/hbase_20260121

或远程:

hdfs dfs -distcp hdfs://prod/hbase hdfs://backup/hbase

✅ 适合:

  • 整机灾备
  • 集群级恢复

❌ 不适合:

  • 热备
  • 单表恢复

四、增量备份(高级)

方案 1:WAL + 快照

  • 定期快照
  • 保留 WAL 日志

方案 2:HBase Replication

add_peer '1', 'zk-remote:2181:/hbase'
enable_table_replication 'user_table'

✅ 适合:

  • 异地容灾
  • 准实时

五、常见生产建议 ✅

场景 推荐方案
单表备份 快照
跨集群 ExportSnapshot
灾备 HDFS distcp
实时容灾 Replication
迁移 Export / Snapshot

六、备份脚本示例(快照 + HDFS)

#!/bin/bash
TABLE=user_table
SNAP=${TABLE}_$(date +%Y%m%d)
hbase shell <<EOF
snapshot '${TABLE}', '${SNAP}'
EOF

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot \
-snapshot $SNAP \
-copy-to hdfs://backup:8020/hbase

如果你愿意,可以告诉我:

  • HBase 版本
  • 单表还是整集群
  • 是否跨机房

我可以给你最合适的备份方案 + 脚本。

0 踩