mysql二进制日志恢复用法

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

提醒:
做任何恢复之前都给数据库做一个完整备份,新建库进行恢复。

介绍:
bin-log是记录着mysql所有事件的操作,可以通过bin-log做完整恢复,基于时间点的恢复,和基于位置的恢复

(1)完整恢复

先执行上次完整备份恢复,再执行自上次备份后产生的二进制日志文件恢复
这样数据库就可以完全的恢复到崩溃前的完全状态

>>mysqlbinlog mysql-bin.000001 | mysql -uroot -p

!!完全恢复,一般用在执行完全备恢复后,对于全备之后的操作,也要进行恢复,这样才能保证不丢失数据。

(2)基于时间点的恢复

如果确认误操作时间点为2015-06-04 10:00:00执行如下

>>mysqlbinlog --stop-date='2015-06-04 9:59:59' mysql-bin.000001 | mysql -uroot -p

然后跳过误操作的时间点,继续执行后面的binlog

>>mysqlbinlog --start-date='2015-06-04 10:01:00' mysql-bin.000001 | mysql -uroot -p

还有一种情况是,恢复指定时间区间的数据
>>mysqlbinlog --start-datetime="2015-07-02 11:25:56" --stop-datetime="2015-07-02 14:20:10" mysql-bin.000001 | mysql -u root -p

(3)基于位置点的恢复
基于时间区间的恢复其实并不常用,以为 即使你误操作的时间,这个时间点还可能涉及到的不只是误操作,也有可能有正确的操作也被跳过去了。那么执行位置恢复
基于位置恢复,通过查看日志文件信息,确认6259-6362为误操作点

>>mysqlbinlog --stop-position=6259 mysql-bin.000001 | mysql -uroot -p #从1开始至6259的事件读,不包括6259事件

>>mysqlbinlog --start-position=6363 mysql-bin.000001 | mysql -uroot -p #从6259的事件开始读

恢复指定位置区间恢复数据
>>mysqlbinlog --start-position=5786 --stop-position=6254 mysql-bin.000001 | mysql -uroot -p

转载于:https://my.oschina.net/u/3420885/blog/1935306

你可能感兴趣的:(mysql二进制日志恢复用法)