提醒:
做任何恢复之前都给数据库做一个完整备份,新建库进行恢复。
介绍:
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