即使删了全库,保证半小时恢复

简介: 近期一篇《就这样把根目录删了!!!》引发了广泛的讨论,《如何防止根目录被删》汇总了7种防删方案。还有同学评论中反馈“不小心把库删了”,如何快速恢复删掉的数据库,是今天要讨论的话题。

近期一篇《就这样把根目录删了!!!》引发了广泛的讨论,《如何防止根目录被删》汇总了7种防删方案。还有同学评论中反馈“不小心把库删了”,如何快速恢复删掉的数据库,是今天要讨论的话题。

【高可用数据库架构】

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

image.png

或者主主架构:

image.png

如果此时主库宕机,可以:

(1)一个从库顶上,重建集群

(2)流量迁移到另一个主库

来保证数据的安全性与服务的可用性。

但是,如果人为不小心执行了“删全库”操作,命令会同步给其他从(主)库,导致所有库上的数据全部丢失,这下怎么办呢?

可以问问自己,当这种情况发生的时候:

(1)能不能恢复数据?(应该没有公司不能)

(2)多久能够恢复数据?

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

【全量备份+增量备份】

常见的数据库安全性策略是:全量备份+增量备份。

image.png

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

image.png

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

如果不小心误删了全库,可以这么恢复:

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

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

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

恢复完毕。

为了保证方案的可靠性,建议定期进行恢复演练。

方案优点:能够找回数据

方案缺点:恢复时间非常长

有没有更优,更快恢复的方案呢?

【1小时延时从】

使用1小时延时从库,可大大加速“删全库”恢复时间。

image.png

什么是1小时延时从?

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

当“删全库”事故发生时,只需要:

(1)应用1小时延时从

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

快速恢复完毕。

方案优点:能够快速找回数据

潜在不足:万一,万一,万一,1小时延时从正在连上主库进行同步的一小段时间内,发生了“删全库”事故,那怎么办咧?

【双份1小时延时从】

使用双份1小时延时从库,可以避免上述“万一,万一,万一”的事故发生。
image.png

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

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

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

方案优点:没有万一,都能快速恢复数据

潜在不足:资源利用率有点低,为了保证数据的安全性,多了2台延时从,降低了从库利用率

【提高从库效率】

image.png

1小时延时从也不是完全没有用,对于一些“允许延时”的业务,可以使用1小时延时从,例如:

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

(2)BI进行数据同步

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

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

【总结】

保证数据的安全性是DBA第一要务,需要进行:

(1)全量备份+增量备份,并定期进行恢复演练,但该方案恢复时间较久,对系统可用性影响大

(2)1小时延时从,双份1小时延时从能极大加速数据库恢复时间

(3)个人建议1小时延时从足够,后台只读服务可以连1小时延时从,提高资源利用率

大伙还有没有什么好方案?

===【完,有收获?求帮转!】===

目录
相关文章
举例:在从库上备份,到主库上恢复
在备库上备份,在主库上恢复 control file和recovery catalog的同步
|
数据库
在备库上进行冷备份的三个步骤
数据库处于mount状态不一定是一致的,要看mrp进程是否存在!
|
SQL 安全 关系型数据库
需要binlog的场景下,“暴力”干掉历史binlog文件,尽情释放磁盘空间
需要binlog的场景下,“暴力”干掉历史binlog文件,尽情释放磁盘空间
109 0
|
数据库
记录一起误删数据文件的临时救急处理
记录一起误删数据文件的临时救急处理
132 0
|
关系型数据库 MySQL 数据库
备库为什么会延迟好几个小时?(下)
为什么要有多线程复制呢?这是因为单线程复制的能力全面低于多线程复制,对于更新压力较大的主库,备库是可能一直追不上主库的。从现象上看就是,备库上seconds_behind_master的值越来越大。 在介绍完每个并行复制策略后,我还和你分享了不同策略的优缺点: 如果你是DBA,就需要根据不同的业务场景,选择不同的策略; 如果是你业务开发人员,也希望你能从中获取灵感用到平时的开发工作中。 从这些分析中,你也会发现大事务不仅会影响到主库,也是造成备库复制延迟的主要原因之一。因此,在平时的开发工作中,我建议你尽量减少大事务操作,把大事务拆成小事务。
157 0
备库为什么会延迟好几个小时?(下)
|
存储 关系型数据库 MySQL
备库为什么会延迟好几个小时?(上)
为什么要有多线程复制呢?这是因为单线程复制的能力全面低于多线程复制,对于更新压力较大的主库,备库是可能一直追不上主库的。从现象上看就是,备库上seconds_behind_master的值越来越大。 在介绍完每个并行复制策略后,我还和你分享了不同策略的优缺点: 如果你是DBA,就需要根据不同的业务场景,选择不同的策略; 如果是你业务开发人员,也希望你能从中获取灵感用到平时的开发工作中。 从这些分析中,你也会发现大事务不仅会影响到主库,也是造成备库复制延迟的主要原因之一。因此,在平时的开发工作中,我建议你尽量减少大事务操作,把大事务拆成小事务。
155 0
备库为什么会延迟好几个小时?(上)
|
数据库管理 索引
备库为什么会延迟好几个小时?(中)
为什么要有多线程复制呢?这是因为单线程复制的能力全面低于多线程复制,对于更新压力较大的主库,备库是可能一直追不上主库的。从现象上看就是,备库上seconds_behind_master的值越来越大。 在介绍完每个并行复制策略后,我还和你分享了不同策略的优缺点: 如果你是DBA,就需要根据不同的业务场景,选择不同的策略; 如果是你业务开发人员,也希望你能从中获取灵感用到平时的开发工作中。 从这些分析中,你也会发现大事务不仅会影响到主库,也是造成备库复制延迟的主要原因之一。因此,在平时的开发工作中,我建议你尽量减少大事务操作,把大事务拆成小事务。
122 0
|
存储 运维 关系型数据库
十年难得一遇!从数据误删到全量恢复的惊险记录
线上的数据库服务我们有完善的备份策略和恢复预案,数据即使被误删除了也是能够恢复的,误删除的数据量恢复只是时间问题。但各位同学自己部署的测试环境或者是在自己电脑中的开发环境的数据库就没有同级别的资源保障了。如果恰好你又把一些不能丢失的数据放到了这种环境中,那么建议要做定期备份,有备才能无患。
下一篇
DataWorks