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清理数据的原理:

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

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

时间: 2024-10-12 11:22:50

HBase从入门到精通系列:误删数据如何抢救?的相关文章

Hbase从入门到精通_如何学好Hbase

Hbase从入门到精通 课程学习地址:http://www.xuetuwuyou.com/course/188 课程出自学途无忧网:http://www.xuetuwuyou.com 课程简介 面对海量数据的存储及实时查询,传统的RDBMS已经无法满足,基于HDFS之上的HBase应运而生,每个表的数据可以达到数百万列和数十亿条,数据存储在HDFS之上充分利用其存储优势,分布式的架构让其查询数据更加快,绝大数电商互联网公司都是用它.   课程内容 (1)HBase 初窥使用 HBase 应用场景

NHibernate从入门到精通系列

http://www.cnblogs.com/GoodHelper/archive/2011/02/17/1948744.html NHibernate从入门到精通系列(4)——持久对象的生命周期(上) 内容摘要 持久对象的状态的概念 持久对象的状态Demo 一.持久对象的状态的概念 在NHibernate中有三种状态,对它的深入理解,才能更好的理解NHibernate的运行机理,刚开始不太注意这些概念,后来发现它是重要的.对于NHibernate和SQL的关系有更好的理解:对于理解需要持久化的

Hadoop之Hbase从入门到精通

Hadoop之Hbase从入门到精通http://yunpan.cn/cwhbfIv2pptiR (提取码:b786)超人学院Hadoop大数据技术资源分享 更多精彩内容请关注超人学院微信  更多精彩内容请关注:http://bbs.superwu.cn

Jenkins pipeline 入门到精通系列文章

Jenkins2 入门到精通系列文章. Jenkins2 下载与启动jenkins2 插件安装jenkins2 hellopipelinejenkins2 pipeline介绍jenkins2 javahelloworldjenkins2 groovy入门jenkins2 pipeline入门jenkins2 pipeline高级jenkins2 Jenkinsfilejenkins2 multibranchjenkins2 Jenkinsfile和loadjenkins2 groovy脚本参考

Asp组件初级入门与精通系列之七

在运行前几章的例子,可能或多或少的都会碰上一些问题 如:组件编译后,又要修改,发生"权限被拒绝,'f:\csdn\fcom.dll'"等等的错误. 当asp页面浏览时,打开任务管理器,会看到一个dllhost.exe,用户名为IWAM_YANG的进程.IWAM_YANG会根据计算机名而有所不同. 可以使用以下几种方式来解决 1. 重新启动iis. 在控制面板中找到管理工具->internet信息服务->右键点击左边树图第二层本地计算机->所有任务->重新启动II

Provisioning Services入门到精通系列之一:PVS前期规划

鉴于PVS这么强大及在企业中应用非常广泛的产品,而且网上这方面的文档也很稀少,所以将撰写ProvisioningServices入门到精通系列博文,后期再通过51CTO博客制作PVS专题,这也即将是我在51CTO博客中的第4个专题了, 另外之前的3个专题链接如下,供大家参考和学习:   Office 365实用详解 http://blog.51cto.com/zt/679 XenApp_XenDesktop7.6实战系列 http://blog.51cto.com/zt/671 XenServe

WPF MVVM从入门到精通8:数据验证

原文:WPF MVVM从入门到精通8:数据验证 WPF MVVM从入门到精通1:MVVM模式简介 WPF MVVM从入门到精通2:实现一个登录窗口 WPF MVVM从入门到精通3:数据绑定 WPF MVVM从入门到精通4:命令和事件 WPF MVVM从入门到精通5:PasswordBox的绑定 WPF MVVM从入门到精通6:RadioButton等一对多控件的绑定 WPF MVVM从入门到精通7:关闭窗口和打开新窗口 WPF MVVM从入门到精通8:数据验证 完整示例代码下载LoginDemo

Selenium 入门到精通系列:五

Selenium 入门到精通系列 PS:显式等待.隐式等待.强制等待方法 例子 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2019-04-23 16:12:33 # @Author : BenLam # @Link : https://www.cnblogs.com/BenLam/ from selenium import webdriver from selenium.webdriver.common.by import B

ASP.NET MVC4入门到精通系列目录汇总(转)

序言 最近公司在招.NET程序员,我发现好多来公司面试的.NET程序员居然都没有 ASP.NET MVC项目经验,其中包括一些工作4.5年了,甚至8年10年的,许多人给我的感觉是:工作了4.5年,Web开发依旧停留在拖控件的水平,最最基本的算 法,递归.排序(我不要求快速排序,你会冒泡就行了)都不会,数据库方面,很基础的SQL都写不出,分组过滤也不会,更别提性能了,问下数据优化经验,除 了回答加索引基本就没下文了.当然,一些过去N年都是做ASP.NET WebForm开发的,不熟悉MVC,那也没