前提说明:
Hadoop: 3.0.0-cdh6.3.2
hbase : 2.1.0-cdh6.3.2
cluster01 的hdfs连接: 172.18.26.6:8020
cluster02 的hdfs连接:172.18.10.90:8020
cluster01 与 cluster02 网络端口相通
cluster01 172.18.26.6 备份机器
cluster02 172.18.10.90 恢复机器
snapshot备份默认已开启
cluster01 cluster02操作的时候最好用hbase用户操作 su - hbase
开始
我的方法是单个hbase的table进行snapshot备份,然后再传输到目标机器
1.snapshot备份(在cluster01 备份)
[root@cdh-master01 ~]# hbase shell
hbase(main):001:0>snapshot 'device','device_snapshot01' #‘device’是table的名字,‘device_snapshot01’是备份快照名称
hbase(main):003:0> list_snapshots #查看快照
SNAPSHOT TABLE + CREATION TIME
device_snapshot01 device (2020-12-18 19:07:18 +0800)
此时在hdfs路径下可以看到快照了
[root@cdh-master01 ~]#hadoop fs -ls hdfs://172.18.26.6:8020/hbase/.hbase-snapshot/ #注意,我的hbase.rootdir是 /hbase,如果是别的请替换
drwxr-xr-x - hbase hbase 0 2020-12-18 19:07 hdfs://172.18.26.6:8020/hbase/.hbase-snapshot/device_snapshot01
2.传输快照
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot
-snapshot device_snapshot01
-copy-from hdfs://172.18.26.6:8020/hbase
-copy-to hdfs://172.18.10.90:8020/opt/hbase
-mappers 16
-bandwidth 1024 #注意我的目标hbase的rootdir是不一样的
3. 恢复(在cluster02进行)
方式1:会覆盖原表device
hbase shell
disable device
restore_snapshot 'device_snapshot01'
enable device
方式2:恢复到新表device_new
clone_snapshot 'device_snapshot01','device_new'
4. 遇到问题
4.1 恢复的时候,卡死不动,等很久就报错
我发现是磁盘满了,删除没用数据请参考另一篇文章
4.2 提示权限问题
那就修改权限:
hadoop fs -chown -R hbase:hbase hdfs://172.18.10.90:8020/opt/hbase/archive/data/default/device_info/
hadoop fs -chmod -R 755 hdfs://172.18.10.90:8020/opt/hbase/archive/data/default/device_info/