提醒:
作任何恢复以前都给数据库作一个完整备份,新建库进行恢复。mysql
介绍:
bin-log是记录着mysql全部事件的操做,能够经过bin-log作完整恢复,基于时间点的恢复,和基于位置的恢复sql
(1)完整恢复数据库
先执行上次完整备份恢复,再执行自上次备份后产生的二进制日志文件恢复
这样数据库就能够彻底的恢复到崩溃前的彻底状态日志>>mysqlbinlog mysql-bin.000001 | mysql -uroot -p事件
!!彻底恢复,通常用在执行彻底备恢复后,对于全备以后的操做,也要进行恢复,这样才能保证不丢失数据。it
(2)基于时间点的恢复io
若是确认误操做时间点为2015-06-04 10:00:00执行以下date
>>mysqlbinlog --stop-date='2015-06-04 9:59:59' mysql-bin.000001 | mysql -uroot -p二进制
而后跳过误操做的时间点,继续执行后面的binlogim
>>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