HBase Snapshot

一、测试目的(文档目的):
使用HBase snapshot,测试Phoenix数据备份、HBase数据备份。

二、测试步骤:
#2.1#定期(如1天),备份重要表、重要数据
snapshot 'PH_MONITOR.T_MONITOR_INTERFACE_LOG', 'PH_MONITOR.T_MONITOR_INTERFACE_LOG_snapshot_20161001'

#2.2#演练Phoenix/HBase中的表被破坏,测试用例如下
##(a)表中数据被删除部分或全部(Phoenix中执行)
DELETE FROM PH_MONITOR.T_MONITOR_INTERFACE_LOG LIMIT 30;
DELETE FROM PH_MONITOR.T_MONITOR_INTERFACE_LOG;
##(b)表被drop(Phoenix中执行)
DROP TABLE PH_MONITOR.T_MONITOR_INTERFACE_LOG;
##(c)表被truncate(HBase中执行)
truncate 'PH_MONITOR.T_MONITOR_INTERFACE_LOG'
##(d)表被drop(HBase中执行)
disable 'PH_MONITOR.T_MONITOR_INTERFACE_LOG'
drop 'PH_MONITOR.T_MONITOR_INTERFACE_LOG'

#2.3#用快照恢复数据,它需要先禁用表,再进行恢复
disable 'PH_MONITOR.T_MONITOR_INTERFACE_LOG'
restore_snapshot 'PH_MONITOR.T_MONITOR_INTERFACE_LOG_snapshot_20161001'
enable 'PH_MONITOR.T_MONITOR_INTERFACE_LOG'


#或,2.3#从快照复制生成一个新表
clone_snapshot 'PH_MONITOR.T_MONITOR_INTERFACE_LOG_snapshot_20161001', 'PH_MONITOR.T_MONITOR_INTERFACE_LOG_newTable_20161001'


#2.4 根据2.2的测试用例得出测试结论:
1、执行2.2中的测试用例后,测试结果
(a)、(c)、(d) HBase、Phoenix数据从镜像snapshot中都可还原
(b) HBase数据从镜像snapshot中可还原;Phoenix由于DROP TABLE,元数据已被删除,所以restore后,Phoenix中看不到原表
2、Phoenix原表被drop,对镜像snapshot的使用(还原成原表、还原其他新表)无影响。
3、Phoenix表通过HBase snapshot备份的话,必须是还原(restore_snapshot)操作,还原成相同名称的表(即原表),Phoenix才能识别;从镜像snapshot还原过来的其他名称的表(clone_snapshot),Phoenix不能识别。


#复制到其他HBase集群
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot PH_MONITOR.T_MONITOR_INTERFACE_LOG_snapshot_20161001 -copy-to hdfs://6.hadoop.com:8020/hbase -mappers 2


hadoop jar /usr/local/fqlhadoop/hbase-1.1.2/lib/hbase-server-1.1.2.jar exportsnapshot -snapshot PH_MONITOR.T_MONITOR_INTERFACE_LOG_snapshot_20161001 -copy-to hdfs://6.hadoop.com:8020/hbase -mappers 2
执行后,就可以在目标集群HBase命令行下执行list_snapshots,看到拷贝过去的snapshot。(snapshot拷贝到目标集群HDFS上的路径hdfs://6.hadoop.com:8020/hbase/.hbase-snapshot/PH_MONITOR.T_MONITOR_INTERFACE_LOG_snapshot_20161001下)


HBase中不用新建表,直接执行restore_snapshot 'PH_MONITOR.T_MONITOR_INTERFACE_LOG_snapshot_20161001'即可;但另一集群Phoenix中无法识别restore_snapshot后的表(再在Phoenix中新建相同结构的表也无法识别)。
如果Phoenix中提前新建表,再执行restore_snapshot,HBase命令行会提示ERROR: PH_MONITOR.T_MONITOR_INTERFACE_LOG


复制到其他HBase集群,测试结论:通过HBase snapshot,
HBase既可以本集群做镜像,本集群还原,又可以本集群做镜像,跨集群还原;
Phoenix不能本集群做镜像,跨集群还原,只能本集群做镜像,本集群还原(因为另一个集群没有Phoenix到HBase元数据的维护)。
(尝试Phoenix映射HBase中已存在的表,映射失败,没有映射到记录)



三、其他
#3.1 测试命令记录
desc 'PH_MONITOR.T_MONITOR_INTERFACE_LOG'

scan 'PH_MONITOR.T_MONITOR_INTERFACE_LOG', {LIMIT=>3}
count 'PH_MONITOR.T_MONITOR_INTERFACE_LOG'

SELECT * FROM PH_MONITOR.T_MONITOR_INTERFACE_LOG LIMIT 3;

SELECT COUNT(1) FROM PH_MONITOR.T_MONITOR_INTERFACE_LOG LIMIT 3;


Replication与Snapshot的区别





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值