在 CentOS 下备份 HBase,常见做法有几种,取决于你是全量备份、增量备份,还是业务可中断。下面按最常用 → 进阶的顺序说明。
HBase Export/Import(官方推荐,安全)适合全量备份某个表,不依赖底层文件,兼容性好。
hbase org.apache.hadoop.hbase.mapreduce.Export \
表名 \
/hbase_backup/表名_20260121
示例:
hbase org.apache.hadoop.hbase.mapreduce.Export \
user_table \
/hbase_backup/user_table_20260121
hbase org.apache.hadoop.hbase.mapreduce.Import \
表名 \
/hbase_backup/表名_20260121
✅ 优点:
不影响线上读写,适合定时备份
hbase shell
snapshot '表名', 'snapshot_20260121'
list_snapshots
disable '表名'
restore_snapshot 'snapshot_20260121'
enable '表名'
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot \
-snapshot snapshot_20260121 \
-copy-to hdfs://namenode:8020/hbase_backup/
✅ 优点:
⚠️ 仅限 HBase 停止或表 disable
hdfs dfs -cp /hbase/data/default/表名 /backup/表名
恢复时再拷回并 enable
hbase backup(HBase 2.x+)企业级备份方案(支持增量)
hbase backup create full hdfs://namenode:8020/backup
#!/bin/bash
DATE=$(date +%Y%m%d)
hbase shell <<EOF
snapshot 'user_table', 'user_table_$DATE'
EOF
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot \
-snapshot user_table_$DATE \
-copy-to hdfs://namenode:8020/hbase_backup/
加入 crontab:
0 2 * * * /opt/scripts/hbase_backup.sh
| 场景 | 推荐方式 |
|---|---|
| 小表、偶尔备份 | Export/Import |
| 生产环境 | 快照 |
| 跨集群 | ExportSnapshot |
| 容灾 | backup 工具 |
如果你告诉我:
我可以给你更精确的备份方案。