前提說明:
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/