首页 技术 正文
技术 2022年11月23日
0 收藏 591 点赞 4,647 浏览 1805 个字

在前面,我们了解了mysql binlog日志的作用以及使用方法:  http://www.php20.cn/article/237

在后面讲到了,可以通过binlog进行恢复数据,那么,具体步骤是怎么样的呢?

数据库备份

数据库恢复的先决条件是,定时备份数据库,缩小binlog恢复范围.首先我们备份测试数据库数据:

1 mysqldump -uroot -p --database test > testBackSql.sql

假定它为最后一次备份数据.

test数据库,test数据表最后一个id为164

新增测试数据

通过mysql存储过程,写入测试新的测试数据

1234567891011121314151617 BEGINDECLARE num INT;SET num=1;WHILE 1 DO    INSERT INTO `test`(`name`, `age`, `sex`)VALUES    (        CONCAT('name:', num),        FLOOR(1 +(RAND() * 40)),        1    );SET num = num + 1;SELECT SLEEP(0.01); END WHILE; END

插入一段时间后,直接删除整个数据库,最后id为367 :

数据恢复

在上面的操作中,我们备份了数据为164 id之前的所有数据,插入数据到了367之后被删库.假设我们并不知道id到了367.开始使用binlog分析日志:

首先使用 flush logs; 命令刷新二进制日志

1 flush logs;

刷新二进制的目的为:确保在刷新日志之前的binlog都为正常数据操作(程序正常更改).

刷新后,新的binlog用于做恢复数据时的记录,

因为当执行备份文件恢复数据和binlog恢复时,都会产生新的binlog,不要和原来的数据进行冲突.

获取binlog日志列表

12345678910 mysql> show master logs;+------------------+-----------+| Log_name         | File_size |+------------------+-----------+| mysql-bin.000001 |     77183 || mysql-bin.000002 |       120 |+------------------+-----------+rows in set (0.00 sec) mysql>

分析各个日志区间

查询000001日志

1  /www/server/mysql/bin/mysqlbinlog /www/server/data/mysql-bin.000001  |more

查询000002日志

1  /www/server/mysql/bin/mysqlbinlog /www/server/data/mysql-bin.000002  |more

很明显,000002没有删库的那条记录,那么代表备份到删库这段时间的binlog日志都存在000001

通过此开始时间,可以判断出,000001  binlog记录了备份后的所有数据.(如果涉及多个binlog,需要执行多个binlog恢复日志)

通过查询binlog,获取到最后恢复点:

1  /www/server/mysql/bin/mysqlbinlog /www/server/data/mysql-bin.000001  |tail -50

将原有备份数据恢复:

1  cat testBackSql.sql |mysql -uroot -p

备份数据已经恢复了,开始恢复二进制数据.

1 /www/server/mysql/bin/mysqlbinlog --stop-position=77066 /www/server/data/mysql-bin.000001| mysql -uroot -p

mysql数据恢复成功.

其他

由于时间限制,关于恢复数据中,需要获取到初始恢复位置(也就是备份数据之后的那个位置,可通过–start-datetime=datetime 参数进行定位)

然后通过–start-position=N 参数进行设置初始恢复点,进行正确的数据恢复

本文为仙士可原创文章,转载无需和我联系,但请注明来自仙士可博客www.php20.cn

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,157
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,625
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,470
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,242
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,878
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,046