​Backing up and Restoring Apache HBase Datasets - tenji/ks GitHub Wiki

HBase 备份与恢复策略

一、Distcp(离线备份)

直接备份HDFS数据,备份前需要disable表,在备份完成之前,服务不可用对在线服务类业务不友好。

$ hadoop distcp /hbase /backup

二、CopyTable(热备)

执行命令前,需要创建表,支持时间区间、row区间,改变表名称,改变列簇名称,指定是否copy删除数据等功能。

$ hbase org.apache.hadoop.hbase.mapreduce.CopyTable -starttime=1265875194289 --endtime=1265878794289 --peer.adr= dstClusterZK:2181:/hbase --families=myOldCf:myNewCf,cf2,cf3 stream

三、Export/Import(热备 + 离线)

通过Export导出数据到目标集群的hdfs,再在目标集群执行import导入数据,Export支持指定开始时间和结束时间,因此可以做增量备份

数据备份(导出):

$ hbase org.apache.hadoop.hbase.mapreduce.Export stream /home/backup1520837383000 2 1517452200000 1520837383000

数据恢复(导入):

$ hbase org.apache.hadoop.hbase.mapreduce.Import stream /home/backup1520589566

Migrate to HBase on S3 using Export and Import:

$ hbase org.apache.hadoop.hbase.mapreduce.Export <table_name> s3://ak:sk@<table_s3_backup>/<location>/
  1. 如何在增量备份时体现出对数据的删除操作? ...
  2. 在备份过程中新增的数据是否会影响备份内容的准确性? ...
  3. 如何备份到其他机器? ...
  4. 如何使用API调用? ...

四、Replication(实时)

通过 Hbase 的 replication 机制实现 Hbase 集群的主从模式实时同步。

  • 新增数据同步

    add_peer '1','node-master1khte.59a47ffd-aace-427f-87e7-69f9ecf93c44.com:2181:/hbase'
    
  • 查询数据同步列表

    list_peers
    
  • 查询数据同步情况

    status 'replication'
    

五、Snapshot(备份实时,恢复需要disable)

备份里面最经济划算的一个,可以每天在固定时间点对hbase表数据进行快照备份,然后如果出现问题了,可以直接恢复到某个时间点上的数据,适合修复指标计算错误的场景,然后从某个时间点上重新修复。快照备份不支持时间戳,不支持增量备份。

新建快照:

$ hbase snapshot create -n test_snapshot -t stream

查看快照:

$ list_snapshots

将快照导出到HDFS:

$ hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot test_snapshot -copy-to  /home/snapshot/backup

从快照恢复数据到原表中:(恢复前必须disable掉需要恢复的表)

$ restore_snapshot 'test_snapshot'

将快照恢复到一个新表中:

$ clone_snapshot 'test_snapshot','test_2'

删除快照:

$ delete_snapshot 'test_snapshot'

参考链接

⚠️ **GitHub.com Fallback** ⚠️