科多大数据开发HBase从入门到精通误删数据如何恢复

 在目前,当时我们操作数据库的时候不小心误删数据,这时候如何找回?比如mysql里有binlog可以帮助我们恢复数据,但是没有开binlog也没有备份就尴尬了,比如如果是大数据开发hbase,你没有做备份误删了又如何恢复呢?科多大数据带你来学习。
数据保护
当误删数据发生时候,不管三七二十一,*一要务是进入hbase shell,执行如下命令:
如果误删一张表的有多个family里的数据,需要都执行一下:
alter'tt', { name => 'f1', keep_deleted_cells => true }, { name => 'f2', keep_deleted_cells => true }
设置 keep_deleted_cells 为 true 的目的在于防止数据被物理删除。这里有必要解释一下hbase清理数据的原理:
首先hbase是一个lsm架构,不断发生着数据文件的写入和合并当删除操作发生时,不会去清理数据文件中的数据,而是写入一个删除标记到新文件中。当某一刻major compaction发生时,在合并文件的同时会根据删除标记清理数据,新合并出来的数据文件不会再有旧数据。
keep_deleted_cells 的作用就是在major compaction发生的时候,决定要不要清理旧数据。这里需要注意一点,即便 keep_deleted_cells 设置为true,数据仍然会因为过期而被清理(hbsae表中的ttl属性)。这个设定无可厚非,既然过期了,误删不误删也无所谓了。
数据恢复
数据恢复的前提数据没有被物理删除,也就是上文提及的。你只需要在查询(scan)的时候,指定raw模式来搜索数据,就能看到被删除的数据,之后你要做就是把数据再写入一次。我们来看一个简单的例子,还是以hbase shell为例子:
1.首先我们准备几行数据
2.然后我们删掉y开头掉数据
3.查一下,现在只有3行了
4.现在我们带上raw再次查找数据,不仅能看到被删除数据,还能看到删除标记。
这里我设置了timerange, 指定的是数据写入的时间。对于我这个case其实并没有什么用,我只是想说明几点:
即便不设置raw,也可以通过时间搜索到被删数据。比如数据写入时间是t,delete时间是t+2,那么查找[0, t+1]的话就能看见数据。前提是设置了 keep_deleted_cells=true如果你后续写入重复的key,那你必须指定好timerange,不然你可能看到的不是原先删除的keyvlaue。delete操作默认的时间不是当前server的时间,也不是构造delete对象的时间,而是被删除的这个keyvalue的写入时间。当然这个得看版本,测试时候发现1.x和2.x还是不一样的,有点坑,还以为高版本不能仅通过timerage搜素被删数据了。如果你的delete mark的时间和数据的时间一样,那只能通过raw看到。
数据恢复完,建议关闭keep_deleted_cells,节省空间,提高查询效率。
其他
上文使用的是hbase shell演示,你可以使用任何语言的api完成上面的操作。
如果你使用的是云hbase,即便因为major compaction物理删除了数据,只要你开启了备份功能,依然可以恢复。

成都科多大数据科技有限公司
18428357207


湖南隆回:樱桃林里同劳动 脱贫致富振乡村
现在乡镇干什么赚钱 乡镇赚钱的行业
3m5413高温胶带原装正品HD琥珀色聚酰亚胺薄膜胶带
厂家直销/遥控器/空调扇遥控器/车载遥控器/无叶扇遥控器
厂家介绍缩径机的各种型号
科多大数据开发HBase从入门到精通误删数据如何恢复
意大利ADLER阿德乐球阀FP3进口球阀
侯马市植物养发馆加盟
浦东外高桥沙发清洗公司|浦东真皮沙发 布艺沙发清洗公司
植物油中9种抗氧化剂的测定GB5009.32-2016
批发供应无纺布杯垫 定做树形无纺布杯垫 时尚创意碗垫餐垫
义乌英语六级辅导哪个机构的教师比较负责任点
YAMAHA电动飞达ZS款 16MM 飞达批发
导轨式安装剩余电流式火灾探测器ARCM安科瑞厂家直销
加盟海鲜快餐店赚钱吗 开伴渔笙小海鲜快餐店还不错
山东科煜厂家直供国标 99.9高含量无水酒精 工业无水乙醇
供应奥德压铸模温机,高温油温机,双回路模温机厂家全国领军品牌
贵州赤水混凝土搅拌站配置先进技术更专业销量领先同行业的
大自然木门:水性漆木门怎么选?关注这四点
集宁优秀的安全帽服务商价格便宜