mysql日志文件的使用、数据恢复(二)

2014-11-24 12:01:51 · 作者: · 浏览: 3
drop table test; --删除表
  Query OK, 0 row affected (0.05 sec)
2. 恢复数据
先用mysqlbinlog工具将日志文件生成txt文件出来分析。
Sql代码
mysql>mysqlbinlog /var/log/mysql/mysql-bin.000001 > /var/log/mysql/000001.txt;
mysql>mysqlbinlog /var/log/mysql/mysql-bin.000002 > /var/log/mysql/000002.txt;
mysql>mysqlbinlog /var/log/mysql/mysql-bin.000003 > /var/log/mysql/000003.txt;
通过这三个命令,可以生成分别记录了日志文件的内容,也就是用户操作的步骤。
因为我们需要重做第一个日志文件的所有操作,所以这里只需要将第一个日志文件全恢复就行了。
Sql代码
mysql>mysqlbinlog /var/log/mysql/mysql-bin.000001 | mysql -uroot –p
Ok,接着,我们需要分析的是第二个日志文件。为什么要分析它呢,因为它中途执行了一个操作是DELETE,因为我们要做的是恢复全部数据,也就是我们不希望去重做这个语句。所以在这里我们要想办法去绕开它。
我们先打开.txt文件来分析一下。
Sql代码
/*
  /*!40019 SET @@session.max_insert_delayed_threads=0*/;
  /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
  DELIMITER /*!*/;
  # at 4
  #090427 15:27:56 server id 1 end_log_pos 106 Start: binlog v 4, server v 5.1.32-community-log created 090427 15:27:56
  BINLOG '
  fF71SQ8BAAAAZgAAAGoAAAAAAAQANS4xLjMyLWNvbW11bml0eS1sb2cAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC
  '/*!*/;
  # at 106
  #090427 15:28:37 server id 1 end_log_pos 176 Query thread_id=1 exec_time=0 error_code=0
  use mytest/*!*/;
  SET TIMESTAMP=1240817317/*!*/;
  SET @@session.pseudo_thread_id=1/*!*/;
  SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
  SET @@session.sql_mode=1344274432/*!*/;
  SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
  /*!/C gbk *//*!*/;
  SET @@session.character_set_client=28,@@session.collation_connection=28,@@session.collation_server=28/*!*/;
  SET @@session.lc_time_names=0/*!*/;
  SET @@session.collation_database=DEFAULT/*!*/;
  BEGIN
  /*!*/;
  # at 176
  #090427 15:28:37 server id 1 end_log_pos 204 Intvar
  SET INSERT_ID=4/*!*/;
  # at 204
  #090427 15:28:37 server id 1 end_log_pos 312 Query thread_id=1 exec_time=0 error_code=0
  SET TIMESTAMP=1240817317/*!*/;
  insert into test(val,data) values(40,'aaa')
  /*!*/;
  # at 312
  #090427 15:28:37 server id 1 end_log_pos 339 Xid = 12
  COMMIT/*!*/;
  # at 339
  #090427 15:28:46 server id 1 end_log_pos 409 Query thread_id=1 exec_time=0 error_code=0
  SET TIMESTAMP=1240817326/*!*/;
  BEGIN
  /*!*/;
  # at 409
  #090427 15:28:46 server id 1 end_log_pos 437 Intvar
  SET INSERT_ID=5/*!*/;
  # at 437
  #090427 15:28:46 server id 1 end_log_pos 545 Query thread_id=1 exec_time=0 error_code=0
  SET TIMESTAMP=1240817326/*!*/;
  insert into test(val,data) values(50,'bbb')
  /*!*/;
  # at 545
  #090427 15:28:46 server id 1 end_log_pos 572 Xid = 13
  COMMIT/*!*/;
  # at 572
  #090427 15:29:35 server id 1 end_log_pos 642 Query thread_id=1 exec_time=0 error_code=0
  SET TIMESTAMP=1240817375/*!*/;
  BEGIN
  /*!*/;
  # at 642
  #090427 15:29:35 server id 1 end_log_pos 670 Intvar
  SET INSERT_ID=6/*!*/;
  # at 670
  #090427 15:29:35 server id 1 end_log_pos 778 Query thread_id=1 exec_time=0 error_code=0
  SET TIMESTAMP=1240817375/*!*/;
  insert into test(val,data) values(60,'ccc')
  /*!*/;
  # a