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

简介: 技术人如果经常线上操作DB,河边走久了,难免出现纰漏,咋办?找DBA恢复数据呗,即使恢复不了,锅总得有人背呀。

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

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

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

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

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

从“从库”恢复数据。

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

image.png

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

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

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

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

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

image.png

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

image.png

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

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

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

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

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

恢复完毕。

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

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

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

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

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

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

image.png

什么是1小时延时从库?

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

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

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

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

快速恢复完毕。

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

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

image.png

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

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

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

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

如何提高从库利用效率?

image.png

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

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

(2)BI进行数据同步;

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

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

五,总结

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

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

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

(2)1小时延时从库;

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

目录
相关文章
|
存储 固态存储 关系型数据库
【DB吐槽大会】第47期 - PG 崩溃恢复能快点吗
大家好,这里是DB吐槽大会,第47期 - PG 崩溃恢复能快点吗
|
监控 Oracle 关系型数据库
DBA_实践指南系列4_Oracle Erp R12系统备份和恢复Backup(案例)
2013-12-04 Created By BaoXinjian 一、摘要 1. ERP系统的数据分类 (1). 操作文件系统 (2). Oracle 11g数据库的程序文件 (3). Oracle数据库的参数文件 (4).
1259 0
|
XML 关系型数据库 数据库连接
|
SQL Oracle 关系型数据库
DBA_Oracle冷备份案例脚本本法(案例)
2014-08-10 Created By BaoXinjian 一、摘要 1. 冷备份     数据库在关闭状态下完成所有物理系统文件拷贝的过程,也称脱机备份     适合于非归档模式下,数据库处于一致性状态 2.
995 0
|
Oracle MySQL 关系型数据库
【招聘】Alibaba 数据库团队招聘Oracle MySQL DBA(无效)
欢迎有意愿加入阿里巴巴数据库团队的朋友 邮件简历 到 qilong.yangql#gmail.com (#--->@) 岗位描述       -支持整个阿里全线业务系统,提供可靠的存储技术方案;      -规模化场景下MySQL/OceanBase/R...
945 0
|
SQL 关系型数据库 MySQL
MySQL · 捉虫动态·DROP DATABASE外键约束的GTID BUG
背景 MySQL的DDL没有被设计成事务操作,因此DDL操作是无法回滚的(像PgSQL把DDL也设计成事务操作,DDL就可以在执行成功后被回滚操作取消)。这就会导致如果某个DDL语句内部被拆分为多个原子的DDL调用,那么这个DDL语句就不具备中途执行失败后回滚整个DDL语句的能力,也就是说,即使语
1655 0
|
数据库 关系型数据库 Oracle
RMAN_学习实验2_RMAN Duplicate复制数据库过程(案例)
待整理         对于基于生产环境下的数据库的版本升级或者测试新的应用程序的性能及其影响,备份恢复等等,我们可以采取从生产环境以克隆的方式将其克隆到本地而不影响生产数据库的正常使用。实现这个功能我们可以借助rman duplicate方式以及其简单的方式来完成。
924 0
|
SQL 关系型数据库 MySQL
MySQL · BUG分析 · Rename table 死锁分析
背景 InnoDB buffer pool中的page管理牵涉到两个链表,一个是lru链表,一个是flush 脏块链表,由于数据库的特性: 脏块的刷新,是异步操作; page存在两个版本,一个是ibd文件的持久化版本,和buffer pool内存中的当前版本。 所以在对table对象进行dd
1933 0
|
SQL 存储 Oracle
oracle一个事务的完整流程分析
oracle服务进程如何处理用户进程的请求服务器进程在完成用户进程的请求过程中,主要完成如下7个任务:0.sql语句的解析1.数据块的读入db buffer2.记日志3.为事务建立回滚段4.
718 0

热门文章

最新文章