Mysql全量备份加binlog日志恢复数据

2019-11-27  本文已影响0人  君子愁

一天,不小心删除了一个表。drop table student;  (非gtid主从)

此时主从mysql的这个表都被删除了,此时怎么恢复。

1.先停止数据库再写入数据,可以停了应用,或者启动服务器上的防火墙

2.在每天凌晨0点,备份前天的全量备份数据


做个全量备份数据模拟:

/usr/local/mysql/bin/mysqldump -uroot -p123456 --master-data=2 --single-transaction -R -B --triggers --databases mei > 20191127.txt

先查看一下student表的内容

然后今天往这个表里插入了几条数据

然后手贱,把student表删除了

下面开始来进行恢复。

先查看一下备份文件,head  -n 30   20191127.txt

找到上一次备份的时候,备份到哪个binlog的哪个位置了

然后获取从这个binlog文件的这个位置开始的内容
/usr/local/mysql/bin/mysqlbinlog --no-defaults -vv -d mei --start-position=7546 /data/mysql/datanode1/bin-log-mysqld5.000005 > 20191127all.sql

如果内容被插入到了两个binlog文件,那么这语句执行两次就可以了

/usr/local/mysql/bin/mysqlbinlog --no-defaults -vv -d mei --start-position=7546 /data/mysql/datanode1/bin-log-mysqld5.000005 > 20191127all.sql

/usr/local/mysql/bin/mysqlbinlog --no-defaults -vv -d mei  /data/mysql/datanode1/bin-log-mysqld5.000006 >>20191127all.sql

把20191127all.sql里面的drop table mei;这一句删除

grep -n  "drop table mei"  20191127all.sql;    #通过grep找到需要删除的语句位于第几行

sed -i '87,93d' 20191127all.sql      #删除87到93行

开始恢复内容

先恢复全备数据

/usr/local/mysql/bin/mysql -uroot -p123456 <20191127.txt 

然后恢复增量的数据

/usr/local/mysql/bin/mysql -uroot -p123456 <20191127all.sql 

查看内容


上一篇下一篇

猜你喜欢

热点阅读