这篇文章主要讲解了MySQL使用mysqldump+binlog完整恢复被删除的数据库的方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
(一)概述
在日常MySQL数据库运维过程中,可能会遇到用户误删除数据,常见的误删除数据操作有:
- 用户执行delete,因为条件不对,删除了不应该删除的数据(DML操作);
- 用户执行update,因为条件不对,更新数据出错(DML操作);
- 用户误删除表drop table(DDL操作);
- 用户误清空表truncate(DDL操作);
- 用户删除数据库drop database,跑路(DDL操作)
- …等
这些情况虽然不会经常遇到,但是遇到了,我们需要有能力将其恢复,下面讲述如何恢复。
(二)恢复原理
如果要将数据库恢复到故障点之前,那么需要有数据库全备和全备之后产生的所有二进制日志。
全备作用 :使用全备将数据库恢复到上一次完整备份的位置;
二进制日志作用:利用全备的备份集将数据库恢复到上一次完整备份的位置之后,需要对上一次全备之后数据库产生的所有动作进行重做,而重做的过程就是解析二进制日志文件为SQL语句,然后放到数据库里面再次执行。
举个例子:小明在4月1日晚上8:00使用了mysqldump对数据库进行了备份,在4月2日早上12:00的时候,小华不小心删除了数据库,那么,在执行数据库恢复的时候,需要使用4月1日晚上的完整备份将数据库恢复到“4月1日晚上8:00”,那4月1日晚上8:00以后到4月2日早上12:00之前的数据如何恢复呢?就得通过解析二进制日志来对这段时间执行过的SQL进行重做。
(三)删库恢复测试
(3.1)实验目的
在本次实验中,我直接测试删库,执行drop database lijiamandb,确认是否可以恢复。
(3.2)测试过程
在测试数据库lijiamandb中创建测试表test01和test02,然后执行mysqldump对数据库进行全备,之后执行drop database,确认database是否可以恢复。
STEP1:创建测试数据,为了模拟日常繁忙的生产环境,频繁的操作数据库产生大量二进制日志,我特地使用存储过程和EVENT产生大量数据。
创建测试表:
use lijiamandb;create table test01
(
id1 int not null auto_increment,
name varchar(30),
primary key(id1)
);
create table test02
(
id2 int not null auto_increment,
name varchar(30),
primary key(id2)
);
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756