阅读量:4
Debian 上 HBase 数据备份与恢复实操
一、备份方案总览与选型
- Snapshot 快照:对表做一次轻量“指针级”快照,几乎不影响在线业务;适合快速回滚、同/跨集群迁移。跨集群用 ExportSnapshot 拷贝快照数据。
- Export/Import:将表数据导出为 SequenceFile 到 HDFS,可指定时间窗口做增量导出;适合小规模或跨环境恢复。
- CopyTable:基于 Scan/Put 在表间/集群间复制数据;适合小表或指定时间/行范围的复制。
- DistCp + BulkLoad:直接拷贝底层 HFiles 到远端 HDFS,再用 LoadIncrementalHFiles 导入;适合大表离线迁移/备份,通常需停写以保证一致性。
- Replication:基于 WAL 的异步复制,用于主备容灾而非离线备份;误删后同样会被复制,不能替代备份。
以上方法在 Debian 环境下的命令与 Linux/HDFS 一致,关键在于 HBase 与 Hadoop 配置正确、权限到位。
二、快照备份与恢复(推荐)
- 开启快照(仅首次需要,hbase-site.xml):
hbase.snapshot.enabled true - 在 HBase Shell 执行:
# 1) 创建快照(可选 SKIP_FLUSH 避免 flush) snapshot 'mytbl', 'snap_20251215', {SKIP_FLUSH => true} # 2) 列出/校验 list_snapshots # 或按前缀过滤 list_snapshots 'snap_.*' # 3) 同集群克隆一份(不覆盖原表,用于验证/演练) clone_snapshot 'snap_20251215', 'mytbl_bak' # 4) 恢复到原表(会先 disable) disable 'mytbl' restore_snapshot 'snap_20251215' enable 'mytbl' # 5) 删除快照 delete_snapshot 'snap_20251215' - 跨集群备份/迁移快照(MR 拷贝,带宽可控):
在目标集群 list_snapshots 可见后,可直接 clone_snapshot 或 restore_snapshot。hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot \ -snapshot snap_20251215 \ -copy-from hdfs://src-nn:8020/hbase \ -copy-to hdfs://dst-nn:8020/hbase \ -mappers 10 -bandwidth 100 - 注意:若集群启用 Replication,restore 后主从位点会不一致,需先停复制、回放/重引导再恢复同步。
三、Export/Import 与 CopyTable(适合小规模与增量)
- Export/Import(可做增量,基于时间戳)
提示:Export 默认只导出每个 Cell 的最新版本,如需多版本,在 Export 命令中增加版本数参数(如:3)。# 全量导出到 HDFS hbase org.apache.hadoop.hbase.mapreduce.Export mytbl /backup/hbase/mytbl_full # 增量导出:仅导出 [starttime, endtime) 区间 hbase org.apache.hadoop.hbase.mapreduce.Export mytbl \ /backup/hbase/mytbl_incr 1 1734230400000 1734316800000 # 目标集群导入(先建表:create 'mytbl', {NAME=>'f1', VERSIONS=>3}) hbase org.apache.hadoop.hbase.mapreduce.Import mytbl /backup/hbase/mytbl_full - CopyTable(同/跨集群复制,基于 Scan/Put)
适用小表或指定窗口;大表/高并发会对线上造成读放大与写放大。# 同集群:复制到新表(需先建表) hbase org.apache.hadoop.hbase.mapreduce.CopyTable --new.table=mytbl_copy mytbl # 跨集群:指定对端 ZK 与父路径 hbase org.apache.hadoop.hbase.mapreduce.CopyTable \ --peer.adr=zk1:2181,zk2:2181,zk3:2181:/hbase \ mytbl # 按时间/列族/行范围 hbase org.apache.hadoop.hbase.mapreduce.CopyTable \ --starttime=1734230400000 --endtime=1734316800000 \ --families=f1,f2 \ --peer.adr=zk1:2181,zk2:2181,zk3:2181:/hbase \ mytbl
四、DistCp 直拷 HFiles 与 BulkLoad(大表离线备份/迁移)
- 步骤
- 为减少不一致,建议对目标表停写(或选择离线时间窗)。
- 使用 DistCp 拷贝表目录(HFiles)到备份/远端 HDFS:
hadoop distcp -m 20 hdfs://src-nn:8020/hbase/data/default/mytbl \ hdfs://backup-nn:8020/hbase/backup/mytbl_hfiles - 在目标集群用 LoadIncrementalHFiles 导入:
hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles \ hdfs://backup-nn:8020/hbase/backup/mytbl_hfiles mytbl
- 说明:该方式速度快、对业务影响小(拷贝的是不可变 HFiles),但要求停写或确保无写入,避免拷贝期间产生新 HFiles 导致不一致。
五、备份策略与运维要点
- 组合建议:以Snapshot 为主(快速回滚/克隆),配合定时 Export 增量到异地 HDFS(长期留存/审计),大表迁移用 DistCp+BulkLoad。
- 一致性:CopyTable/Export 会扫描表,可能对线上造成读/写放大;尽量在低峰或设置 starttime/endtime 窗口执行。
- 版本与多版本:Export 默认仅导出最新版本,多版本需在导出时显式指定版本数。
- 复制与恢复:启用 Replication 的主从环境,执行 restore 后需停复制并重新引导,避免主从不一致。
- 校验与演练:定期做快照克隆与导入验证,并校验 HFiles 数量/大小与 count/scan 结果,确保可恢复性。
以上就是关于“Debian HBase数据备份怎么做”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm