mysqlbinlog 恢复mysql数据

确保my.cnf启动了 log-bin (既log-bin=mysql-bin

 

mysql> show master status;   #查看使用的那个logbin文件

mysql> show binlog events in +“当前的日志文件” \G;

 

eg:

mysql> show master status \G;

*************************** 1. row ***************************

            File: mysql-bin.000006

 

mysql> show binlog events in 'mysql-bin.000006' ;

 

flush logs:表示建立的mysql-bin文件,如当前的为mysql-bin.000006,当执行了flush logs命令后,就会变成mysql-bin.000007。依次类推。

 

恢复时间查看

Mysqlbinlog  /usr/local/mysql/data/mysql-bin.000001

wKiom1YcfnTCXo87AAL5wsJVoCQ668.jpg 

 

1通过结束时间向前恢复--stop-date

   mysqlbinlog --stop-date=" 2015-10-06 15:10:00" /usr/local/mysql/data/mysql-bin.000001 | mysql -uroot -pjiang211689

 

该命令将恢复截止到在--stop-date选项中以DATETIME格式给出的日期和时间的所有数据。

 

2. 如果没有检测到错误的SQL语句mysqlbinlog可以通过--start-date指定开始时间恢复

   mysqlbinlog --start-date=2012-03-15 00:01:00″ /data1/log/mysql/mysql-bin.000001  | mysql -u root -pmypasswd

 

3指定时间段恢复 通过mysqlbinlog --start-date  --stop-date恢复指定时间段的数据库活动记录,如下:

mysqlbinlog --start-date=2015-03-09 02:00:00--stop-date=2015-03-15 11:00:00″ /data1/log/mysql/mysql-bin.000001 > /tmp/mysql_restore.sql

通过这种方式,就能获取最后一个备份的文件时间2015-03-09 02:00:00到今天删除数据库之前2015-03-15 11:00:00这段时间的数据库活动事务操作

 

4指定开始\结束位置(和指定时间差不多),如下图所示,通过show binlog events中查看“end_log_pos”,选中开始和结束位置。(注意mysql-bin.00000X文件的选取)

wKiom1YcfpPiayygAAO1MdlqUEY143.jpg 

--start-position="107" //指定107位置开始

--stop-position="289"//指定到289位置结束 

eg:

mysqlbinlog --start-position="107" --stop-position="316/usr/local/mysql/data/mysql-bin.000001 | mysql -uroot -pjiang211689

 

注意:重新启动数据库,会产生新的mysql-bin日志文件

wKiom1Ycfqjh1gRnAABcyuxVyyg939.jpg


你可能感兴趣的:(mysqlbinlog,恢复mysql数据)