hbase的高级特性之快照功能

hbase快照恢复 hbase 删除快照_hdfs


关于snapshot的快照总共有这么多命令:

clone_snapshot:这个命令的意思是通过克隆的内容创建一个新表,在创建表的时候不会产生数据副本也不会影响原来的快照数据,仅仅是通过快照重新创建了一个新表,并且包含了快照时的数据

使用方法:

(1)clone_snapshot ‘snapshotName’, ‘tableName’

使用快照在默认表空间中创建一个新表

(2)clone_snapshot ‘snapshotName’, ‘namespace:tableName’

使用快照创建一个namespace表空间,并且表的名称为tablename

clone_snapshot 'snapshot_testtable1_20200419','clone_testtable1'

delete_all_snapshot:删除所有快照

delete_snapshot:删除指定快照

delete_table_snapshots:删除符合正则表达式的快照

list_snapshots:列出所有的快照

list_table_snapshots:列出否正则表达式的快照

restore_snapshot:恢复快照

hbase快照恢复 hbase 删除快照_hbase快照恢复_02


snapshot:创建一个快照

Take a snapshot of specified table. Examples:

hbase> snapshot ‘sourceTable’, ‘snapshotName’

hbase> snapshot ‘namespace:sourceTable’, ‘snapshotName’, {SKIP_FLUSH => true}

这些命令都是在hbase shell命令行下的快照操作,我们也可以直接使用hbase的命令直接操作快照

hbase快照恢复 hbase 删除快照_hbase快照恢复_03


snapshot 的子命令有create 、info、export

create: 就是创建一个快照

info :就是查看快照的一些信息

hbase快照恢复 hbase 删除快照_hbase_04


export:把快照导出,下面就是关于export的一些用法

hbase快照恢复 hbase 删除快照_hdfs_05


通过一些可选项对快照进行一些操作,

示例:

Examples:
  hbase snapshot export \
    --snapshot MySnapshot --copy-to hdfs://srv2:8082/hbase \
    --chuser MyUser --chgroup MyGroup --chmod 700 --mappers 16
//把当前主机的hbase中的快照复制到另一端服务器的hbase中
  hbase snapshot export \
    --snapshot MySnapshot --copy-from hdfs://srv2:8082/hbase \
    --copy-to hdfs://srv1:50070/hbase
//从远端的服务器导入到当前端的hbase中

我就测试一个从当前端导入远端的hbase中的命令,我的当前端是一个伪分布,远端是一个全分布

hbase snapshot export --snapshot snapshot_202004192300  --copy-to hdfs://bigdata112:9000/hbase

我在导入的时候因为不小心所以报错了好几回,

(1)一开始因为在bigdata112上copy到bigdata112所以快照找不见

(2)第二次是因为–snapshot 参数没带

(3)第三次是因为–snapshot写成了–snapshort

所以就小心一点最终是导入成功了

hbase快照恢复 hbase 删除快照_hadoop_06


我们在bigdata112的命令行模式下查看一下是否导入成功

hbase快照恢复 hbase 删除快照_hdfs_07


没有问题,我们再恢复一下

(1)先确认我们bigdata112这个全分布环境中没有这个表

hbase快照恢复 hbase 删除快照_hbase_08


(2)使用restore_snapshot命令来恢复快照

hbase快照恢复 hbase 删除快照_数据_09


(3)再查看一下是否已经有了这个表

hbase快照恢复 hbase 删除快照_hbase快照恢复_10


现在我们使用快照功能可以正常操作