使用HBase Snapshot恢复Trafodion误删数据
来源:互联网 发布:linux清除部分历史命令 编辑:程序博客网 时间:2024/05/22 17:06
本文介绍当在Trafodion不小心使用delete误删除数据后的恢复方法,使用HBase的Snapshot特性。
假如我们有一个现成的Trafodion表,表中有一些样例数据,如下
SQL>select * from test_rec_del;A B----------- ----------- 1 2 3 4 5 6 7 8 9 10--- 5 row(s) selected.
从HBase Shell亦可以Scan数据,
hbase(main):019:0> scan 'TRAFODION.SEABASE.TEST_REC_DEL'ROW COLUMN+CELL \x9FZz&\xF9b\xE37 column=#1:\x01, timestamp=1499680251200, value=\x10\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x007\xE3b\xF9&zZ\x1F\x01\x00\x00\x00\x02 \x00\x00\x00 \x9FZz&\xF9c\x166 column=#1:\x01, timestamp=1499680251203, value=\x10\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x006\x16c\xF9&zZ\x1F\x03\x00\x00\x00\x04 \x00\x00\x00 \x9FZz&\xF9c"\xF4 column=#1:\x01, timestamp=1499680251205, value=\x10\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xF4"c\xF9&zZ\x1F\x05\x00\x00\x00\x06 \x00\x00\x00 \x9FZz&\xF9c'\xEF column=#1:\x01, timestamp=1499680251206, value=\x10\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xEF'c\xF9&zZ\x1F\x07\x00\x00\x00\x08 \x00\x00\x00 \x9FZz&\xF9c,\x0D column=#1:\x01, timestamp=1499680251207, value=\x10\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0D,c\xF9&zZ\x1F\x09\x00\x00\x00\x0A \x00\x00\x005 row(s) in 0.0630 seconds
此时,HBase中无任何表的Snapshot,可通过list_snapshots查看,
hbase(main):025:0* list_snapshotsSNAPSHOT TABLE + CREATION TIME0 row(s) in 0.0220 seconds=> []
要想根据HBase Snapshot特性恢复数据,那么前提是表上已经生成了相关的Snapshot,生成Snapshot方法如下,
hbase(main):001:0> snapshot 'TRAFODION.SEABASE.TEST_REC_DEL','snapshot_test_rec_del'0 row(s) in 0.6790 secondshbase(main):002:0> list_snapshotsSNAPSHOT TABLE + CREATION TIME snapshot_test_rec_del TRAFODION.SEABASE.TEST_REC_DEL (Mon Jul 10 17:56:28 +0800 2017)1 row(s) in 0.0520 seconds=> ["snapshot_test_rec_del"]
现在模拟误删数据,
SQL>delete from test_rec_del;--- 5 row(s) deleted.SQL>select count(*) from test_rec_del;(EXPR)-------------------- 0--- 1 row(s) selected.
从HBase Shell中也无法Scan到数据,
hbase(main):003:0> scan 'TRAFODION.SEABASE.TEST_REC_DEL'ROW COLUMN+CELL0 row(s) in 0.2190 seconds
现在可以执行Snapshot恢复步骤了,步骤为:
1. disable table_name
2. restore_snapshot snapshot_name
3. enable table_name
hbase(main):002:0* disable 'TRAFODION.SEABASE.TEST_REC_DEL'0 row(s) in 2.7230 secondshbase(main):003:0> restore_snapshot 'snapshot_test_rec_del'0 row(s) in 0.3960 secondshbase(main):004:0> enable 'TRAFODION.SEABASE.TEST_REC_DEL'0 row(s) in 1.2700 seconds
从Trafodion中重新查看表,此时发现表中数据已恢复,
SQL>select * from test_rec_del;A B----------- ----------- 1 2 3 4 5 6 7 8 9 10--- 5 row(s) selected.
注意,由于Snapshot保存的是某一时刻表的状态,所以恢复出来的数据只是备份时的那个状态信息,如果有多个时刻的Snapshot,可以选择希望恢复到离某个时间点最新的Snapshot进行恢复。有关HBase Snapshot的介绍,可以参考: http://blog.cloudera.com/blog/2013/03/introduction-to-apache-hbase-snapshots/
在Trafodion中,如果希望支持数据恢复的功能,建议使用Trafodion的“离线备份恢复”机制,定期进行数据库的备份(同样利用HBase snapshot原理),这样可以实现恢复数据到某一状态,关于“离线备份恢复”方法,可参考我的另外一篇博客:http://blog.csdn.net/post_yuan/article/details/53393267
如果是从离线备份数据集中恢复一张表,具体命令如下,
sudo -u hbase hbase org.trafodion.utility.backuprestore.TrafExportSnapshot -D hbase.rootdir=hdfs://备份目录 -snapshot 快照名字 -copy-to hdfs://hdfs root目录/hbase -mappers 0 -mr-lowlimit-mb 100
- 使用HBase Snapshot恢复Trafodion误删数据
- Trafodion 使用HBase snapshot方式迁移单表
- trafodion表元数据破坏,hbase数据正常情况下恢复trafodion表数据步骤
- Hbase恢复误删数据
- Trafodion 使用snapshot扫描大表
- HDFS和Hbase误删数据恢复
- HBase Snapshot
- HBase Snapshot
- Hbase数据恢复方案
- Trafodion 使用hash2partfunc查看数据倾斜
- HBase总结(十五)HBase数据恢复
- HBase数据备份和恢复
- Trafodion:Transactional SQL on HBase
- Trafodion访问原生HBase表
- Trafodion 查看原生HBase表
- HBase Snapshot简介
- HBase snapshot分析
- HBase snapshot分析
- unity UGUI学习(以炉石传说为标准) (一) 播放开头动画
- Python监控动态日志
- 案例二:基于MapReduce分词统计
- CAP?
- gcc 关于fatal error: stdio.h: No such file or directory #include<stdio.h>的问题
- 使用HBase Snapshot恢复Trafodion误删数据
- iOS 10.0.2 (JailBreak) scp: command not found
- 编程题 链表 java
- @Override作用个人理解
- 2017.7.10 学习记录 JavaScript的按钮事件
- 映射和反射的概念及应用方法
- UVA 11478 差分约束+二分+判断负环
- iOS之KVO使用
- Struts2零配置