HBase从入门到精通系列:误删数据如何抢救?
当误删数据发生时候,不管三七二十一,第一要务是进入hbase shell,执行如下命令:
如果误删一张表的有多个family里的数据如何删除数据,需要都执行一下:
alter 'tt', { NAME
数据保护 当误删数据发生时候,不管三七二十一,第一要务是进入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 作为一名程序员,业余时间都在干什么? 有哪些兼职赚钱的方法?我们将隆重介绍阿里云官方推广组织“云大使”,跟淘宝客一样,每一位云大使能通过自己的努力,赚取高于工资甚至是几倍的报酬!扫码了解! 更多精彩 云大使特权: (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |