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

开发 开发工具
保证数据的安全性是DBA第一要务,理论上可以恢复+跑路、全量备份+增量备份+定期演练、1小时延时从库和双份1小时延时从库+提高资源利用率。

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

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

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

[[233844]]

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

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

从“从库”恢复数据。

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

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

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

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

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

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

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

 

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

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

  • 将最近一次全量备份的全库找到,拷贝回来(文件一般比较大),解压,应用;
  • 将最近一次全量备份后,每一天的增量binlog找到,拷贝回来(文件较多),依次重放;
  • 将最近一次增量备份后,到执行“删全库”之前的binlog找到,重放;

恢复完毕。

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

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

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

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

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

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

什么是1小时延时从库?

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

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

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

快速恢复完毕。 

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

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

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

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

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

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

如何提高从库利用效率?

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

  • 运营后台,产品后台;
  • BI进行数据同步;
  • 研发进行数据抽样,调研;

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

五、总结

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

  • 理论上可以恢复+跑路;
  • 全量备份+增量备份+定期演练;
  • 1小时延时从库;
  • 双份1小时延时从库+提高资源利用率; 

【本文为51CTO专栏作者“58沈剑”原创稿件,转载请联系原作者】

戳这里,看该作者更多好文

责任编辑:赵宁宁 来源: 51CTO专栏
相关推荐

2018-06-21 09:45:01

数据恢复数据安全DBA

2018-06-07 09:32:07

2010-08-12 10:54:21

IBM DB2数据库

2018-07-06 13:02:23

2009-04-01 14:07:44

表空间备份恢复

2010-09-01 09:32:08

DB2恢复

2023-12-18 08:24:09

LinuxPythonWord

2018-07-25 17:05:25

Windows电脑数码

2009-02-24 10:19:49

Oracle DBA深入解析Oracle求职

2023-10-22 11:17:50

AOFRedis数据库

2010-08-18 15:31:30

DB2数据库恢复

2017-05-31 16:10:45

MySQL误操作恢复数据

2017-06-07 19:18:56

Oracle实例恢复前滚和回滚

2016-12-07 08:50:18

Windows 10桌面图标

2021-09-11 23:03:26

iPhone手机技能

2010-08-31 13:35:53

DB2备份恢复

2010-08-13 09:55:33

DB2dart恢复数据

2010-03-03 10:03:09

DB2DBA

2009-02-23 10:31:36

2010-08-19 09:44:04

DB2创建外键
点赞
收藏

51CTO技术栈公众号