使用binlog撤销MySQL误操作

Copied From:http://www.dewen.org/q/2654 
作者:崔苔吾 @ 德问
 
  

在MySQL中执行误操作之后,如果没有数据备份的话就只能通过MySQL的binlog来处理误操作。具体可以参考以下方法:

在MySQL的my.ini(或my.cnf,视操作系统不同而不同)添加: 

  [mysqld] 
  log-bin=binlogname(名字随便取) 
重启MySQL服务,使其生效。

执行以下命令查看配置是否成功:

  show binlog events;


通过mysqlbinlog恢复MySQL数据的两种方法: 

(1)时间date 
    通过cmd运行到binlog所在的目录,再录入如下命令:
    mysqlbinlog --stop-date="2011-02-27 12:12:59" jbms_binlog.000001 | mysql -uroot -proot (回车) 

(恢复到2011-02-27 12:12:59之前的数据,如果是start-date,即从该时间点后的开始算起) 


(2)位置position: 
    先将binlog日志转换成txt: 
    mysqlbinlog --start-date="2011-02-27 13:10:12" --stop-date="2011-02-27 13:47:21" jbms_binlog.000002 > temp/002.txt 

(将时间段内的日志文件转换成txt,注意binlog和temp文件夹是同一目录下。)


    查看生成的txt文件,获取编辑位置和时间等数据,然后执行如下命令: 

    mysqlbinlog --stop-position="98" jbms_binlog.000002 | mysql -uroot -proot 
        (恢复位置为“98”处操作的数据,其中stop也可以换成start。) 


PS:如果通过drop table name;将表删除,要想恢复数据,必须建立一个表名、字段和数据类型相一致的空表,否则数据无法恢复,报表不存的错误。

你可能感兴趣的:(MySQL)