我把binlog里面的转换成sql语句是下面的,下面是记录删除的sql语句。use test_dbo/*!*/;
SET TIMESTAMP=1282621213/*!*/;
delete from contactlist
但是我用mysql -u -p < 1.sql还原下面的居然还原不到原来数据。同事我也测试了一下,在往contactlist插入一条记录,执行下面的文件,结果把刚插入的给删除了,怎么才能还原delete 记录/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#100824 11:23:52 server id 1  end_log_pos 98  Start: binlog v 4, server v 5.0.86-community-nt-log created 100824 11:23:52
# Warning: this binlog is either in use or was not closed properly.
# at 510
#100824 11:40:13 server id 1  end_log_pos 582  Query thread_id=1 exec_time=0 error_code=0
SET TIMESTAMP=1282621213/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=1344274432/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8/*!*/;
BEGIN
/*!*/;
# at 582
#100824 11:40:13 server id 1  end_log_pos 672  Query thread_id=1 exec_time=0 error_code=0
use test_dbo/*!*/;
SET TIMESTAMP=1282621213/*!*/;
delete from contactlist
/*!*/;
# at 672
#100824 11:40:13 server id 1  end_log_pos 699  Xid = 93
COMMIT/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

解决方案 »

  1.   

    先恢复你的备份,然后根据你的日志还原到delete前的那一刻,就得到你delete前的状态了。
    或者没有备份,直接根据日志(从建库开始)执行到你delete前的那一时刻。
      

  2.   

    日志中记录只是执行过的SQL语句。通过这些语句并不能反向恢复记录。只能先恢复最近的全备份,然后再利用日志从全备份的时刻再逐步恢复到当前时刻。