Backing up and Restoring Apache HBase Datasets - tenji/ks GitHub Wiki
直接备份HDFS数据,备份前需要disable表,在备份完成之前,服务不可用对在线服务类业务不友好。
$ hadoop distcp /hbase /backup
执行命令前,需要创建表,支持时间区间、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导出数据到目标集群的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>/
- 如何在增量备份时体现出对数据的删除操作? ...
- 在备份过程中新增的数据是否会影响备份内容的准确性? ...
- 如何备份到其他机器? ...
- 如何使用API调用? ...
通过 Hbase 的 replication 机制实现 Hbase 集群的主从模式实时同步。
-
新增数据同步
add_peer '1','node-master1khte.59a47ffd-aace-427f-87e7-69f9ecf93c44.com:2181:/hbase'
-
查询数据同步列表
list_peers
-
查询数据同步情况
status 'replication'
备份里面最经济划算的一个,可以每天在固定时间点对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'