db如何快速回滚+恢复,DBA的神技能

技术人如果经常线上操作DB,河边走久了,难免出现纰漏:

  • update错数据了
  • delete错数据了
  • drop错数据了

咋办?找DBA恢复数据呗,即使恢复不了,锅总得有人背呀。

画外音:把数据全删了,怎么办,怎么办?

零,哪种方案不能实现数据恢复?

从“从库”恢复数据。

一般来说数据库集群是主从架构:

如果人为执行了“删库”操作,命令会同步给其他从库,导致所有库上的数据全被删除,无法恢复,故这种方案是不行的。

一,如果DBA没有做功课,最常见的处理方案是什么?

如果没有做数据安全方案,应对“删库”最常见的操作是,跑路。删掉了公司最重要的资产,还不快闪。

二,如果DBA日常做了全量备份+增量备份,应该怎么处理?

DBA最常见的技能是:全量备份+增量备份

全量备份:定期(例如一个月)将库文件全量备份。

增量备份:定期(例如每天)将binlog增量备份。

如果不小心“删库”,可以这么恢复:

(1)将最近一次全量备份的全库找到,拷贝回来(文件一般比较大),解压,应用;

(2)将最近一次全量备份后,每一天的增量binlog找到,拷贝回来(文件较多),依次重放;

(3)将最近一次增量备份后,到执行“删全库”之前的binlog找到,重放;

恢复完毕。

为了保证方案的可靠性,需要定期进行演练。

咦,我怎么好像没听过DBA定期做过这类演练?

很有可能只是做了理论上的方案,如果真出了问题,效果也只是理论上能恢复。此时回归方案一,跑路。

全量备份+增量备份的恢复周期也非常长,可能是天级别。

画外音:把几T的数据传输过来都用了好长时间。

三,如果DBA做了“1小时延时从库”,应该怎么处理?

什么是1小时延时从库?

如上图所示,增加一个从库,这个从库不是实时与主库保持同步的,而是每隔1个小时同步一次主库,同步完之后立马断开1小时,这个从库会与主库保持1个小时的数据差距。

当“删全库”事故发生时,如何利用“1小时延时从库”快速恢复数据?

(1)应用1小时延时从;

(2)将1小时延时从最近一次同步时间到,执行“删全库”之前的binlog找到,重放

快速恢复完毕。

这个方案的优点是,能够快速找回数据。潜在不足是,万一“1小时延时从库”正在连上主库进行同步的一小段时间内,发生了“删库”事故,也无法恢复。

四,如果DBA做了“双份1小时延时从库”,应该怎么处理?

什么是双份1小时延时从?

如上图所示,两个1小时延时从库,它们连主库同步数据的时间“岔开半小时”。

这样,即使一个延时从连上主库进行同步的一小段时间内,发生了“删库”事故,依然有另一个延时从保有半小时之前的数据,可以实施快速恢复。

这个方案的优点是,没有万一,一定能快速恢复数据。潜在的不足是,资源利用率有点低,为了保证数据的安全性,多了2台延时从,降低了从库利用率。

如何提高从库利用效率?

对于一些“允许延时”的业务,可以使用1小时延时从,例如:

(1)运营后台,产品后台;

(2)BI进行数据同步;

(3)研发进行数据抽样,调研;

但需要注意的是,毕竟这是从库,只能够提供“只读”服务哟。

五,总结

保证数据的安全性是DBA第一要务:

(0)理论上可以恢复+跑路;

(1)全量备份+增量备份+定期演练;

(2)1小时延时从库;

(3)双份1小时延时从库+提高资源利用率;

DBA的神技能,学到了吗,求转。

贵司用的是哪种方案?

原文发布于微信公众号 - 架构师之路(road5858)

原文发表时间:2018-06-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏高性能服务器开发

(八)高性能服务器架构设计总结4——以flamigo服务器代码为例

二、架构篇 一个项目的服务器端往往由很多服务组成,就算单个服务在性能上做到极致,支持的并发数量也是有限的,举个简单的例子,假如一个聊天服务器,每个用户的信息是1...

5104
来自专栏高性能服务器开发

(八)高性能服务器架构设计总结4——以flamigo服务器代码为例

一个项目的服务器端往往由很多服务组成,就算单个服务在性能上做到极致,支持的并发数量也是有限的。举个简单的例子,假如一个聊天服务器,每个用户的信息是1k,那对于一...

1265
来自专栏技术换美食换不换

建站之路

1052
来自专栏blackheart的专栏

[解读REST] 6.REST的应用经验以及教训

衔接上文[解读REST] 5.Web的需求 & 推导REST,上文根据Web的需求推导出了REST架构风格,以及REST的详细描述和解释。自从1994年以来,R...

26210
来自专栏即时通讯技术

技术干货:从零开始,教你设计一个百万级的消息推送系统

本文主要分享的是如何从零设计开发一个中大型推送系统,因限于篇幅,文中有些键技术只能一笔带过,建议有这方面兴趣的读者可以深入研究相关知识点,从而形成横向知识体系。

2172
来自专栏程序猿DD

主流Java数据库连接池比较及前瞻

常用的主流开源数据库连接池有C3P0、DBCP、Tomcat Jdbc Pool、BoneCP、Druid等

3575
来自专栏coolblog.xyz技术专栏

MyBatis 源码分析系列文章合集

我从七月份开始阅读MyBatis源码,并在随后的40天内陆续更新了7篇文章。起初,我只是打算通过博客的形式进行分享。但在写作的过程中,发现要分析的代码太多,以至...

1.3K7
来自专栏Timhbw博客

关于模仿网站的一些心得

2016-05-0417:47:47 发表评论 580℃热度 最近在做一个公司网站(学习为主),发现大部分企业网站都是静态网页,用php的少之又少,大部分都是...

4027
来自专栏数据和云

数据库高可用和分区解决方案-MySQL 篇

许春植(Luocs) (阿里巴巴高级数据库管理员,7年以上数据库运维管理经验,擅长MySQL、Oracle及MongoDB数据库,目前主要研究并建设Mongo...

5316
来自专栏blackheart的专栏

[解读REST] 5.Web的需求 & 推导REST

衔接上文[解读REST] 4.基于网络应用的架构风格,上文总结了一些适用于基于网络应用的架构风格,以及其评估结果。在前文的基础上,本文介绍一下Web架构的需求,...

20710

扫码关注云+社区

领取腾讯云代金券