码迷,mamicode.com
首页 > 其他好文 > 详细

HBase从入门到精通系列:误删数据如何抢救?

时间:2018-09-11 14:01:36      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:case   rrg   模式   nlog   命令   架构   cells   架构设计   简单的   

云栖君导读:有时候我们操作数据库的时候不小心误删数据,这时候如何找回?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清理数据的原理:

 

 

KEEP_DELETED_CELLS 的作用就是在major compaction发生的时候,决定要不要清理旧数据。这里需要注意一点,即便 KEEP_DELETED_CELLS 设置为True,数据仍然会因为过期而被清理(HBsae表中的TTL属性)。这个设定无可厚非,既然过期了,误删不误删也无所谓了。

 

数据恢复

技术分享图片

 

数据恢复的前提数据没有被物理删除,也就是上文提及的。你只需要在查询(Scan)的时候,指定raw模式来搜索数据,就能看到被删除的数据,之后你要做就是把数据再写入一次。我们来看一个简单的例子,还是以hbase shell为例子:

 

1.首先我们准备几行数据

 

技术分享图片

 

2.然后我们删掉y开头掉数据

 

技术分享图片

 

3.查一下,现在只有3行了

 

技术分享图片

 

4.现在我们带上raw再次查找数据,不仅能看到被删除数据,还能看到删除标记。

 

技术分享图片

 

这里我设置了TIMERANGE, 指定的是数据写入的时间。大学排名对于我这个case其实并没有什么用,我只是想说明几点:

 

 

数据恢复完,建议关闭KEEP_DELETED_CELLS,节省空间,提高查询效率。

 

其他

技术分享图片

 

上文使用的是hbase shell演示,你可以使用任何语言的API完成上面的操作。

 

如果你使用的是云HBase,即便因为major compaction物理删除了数据,只要你开启了备份功能,依然可以恢复。

 

end

技术分享图片

如果,Google 早已解决不了你的问题。

如果,你还想知道 Apple、Facebook、IBM、阿里等国内外名企的核心架构设计。

来,我们在深圳准备了知识星球,想助你成长:

技术分享图片

 


文章来源:https://blog.csdn.net/rlnLo2pNEfx9c/article/details/80837541

HBase从入门到精通系列:误删数据如何抢救?

标签:case   rrg   模式   nlog   命令   架构   cells   架构设计   简单的   

原文地址:https://www.cnblogs.com/wangfengxia/p/9626900.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!