zoukankan      html  css  js  c++  java
  • 1010针对一个binlog日志的分析

    针对一个BINLOG日志的分析

    -- 当前binlog_format | ROW
    [root@109 mysql]# cat wang1010.txt
    /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
    /*!40019 SET @@session.max_insert_delayed_threads=0*/;
    /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
    DELIMITER /*!*/;
    # at 4
    #171010 16:15:41 server id 109 end_log_pos 120 CRC32 0x62153ff3 Start: binlog v 4, server v 5.6.36-log created 171010 16:15:41
    # Warning: this binlog is either in use or was not closed properly.
    BINLOG '
    rYHcWQ9tAAAAdAAAAHgAAAABAAQANS42LjM2LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAXAAEGggAAAAICAgCAAAACgoKGRkAAfM/
    FWI=
    '/*!*/;
    # at 120
    #171010 16:50:25 server id 109 end_log_pos 250 CRC32 0x3b7ba6f0 Query thread_id=3487 exec_time=0 error_code=0
    use `wang0728`/*!*/;
    SET TIMESTAMP=1507625425/*!*/;
    SET @@session.pseudo_thread_id=3487/*!*/;
    SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
    SET @@session.sql_mode=1075838976/*!*/;
    SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
    /*!C utf8 *//*!*/;
    SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
    SET @@session.lc_time_names=0/*!*/;
    SET @@session.collation_database=DEFAULT/*!*/;
    create table wang1010(id int ,name varchar(20))
    /*!*/;


    # at 250
    #171010 16:50:41 server id 109 end_log_pos 326 CRC32 0x50dafb46 Query thread_id=3487 exec_time=0 error_code=0
    SET TIMESTAMP=1507625441/*!*/;
    BEGIN
    /*!*/;
    # at 326
    #171010 16:50:41 server id 109 end_log_pos 384 CRC32 0xc12a366e Table_map: `wang0728`.`wang1010` mapped to number 94
    # at 384
    #171010 16:50:41 server id 109 end_log_pos 430 CRC32 0x32327701 Write_rows: table id 94 flags: STMT_END_F

    BINLOG '
    4YncWRNtAAAAOgAAAIABAAAAAF4AAAAAAAEACHdhbmcwNzI4AAh3YW5nMTAxMAACAw8CPAADbjYq
    wQ==
    4YncWR5tAAAALgAAAK4BAAAAAF4AAAAAAAEAAgAC//wBAAAABXdhbmdxAXcyMg==
    '/*!*/;
    ### INSERT INTO `wang0728`.`wang1010`
    ### SET
    ### @1=1 /* INT meta=0 nullable=1 is_null=0 */
    ### @2='wangq' /* VARSTRING(60) meta=60 nullable=1 is_null=0 */
    # at 430
    #171010 16:50:41 server id 109 end_log_pos 461 CRC32 0xdf1bff19 Xid = 1855
    COMMIT /*!*/; -- 通过COMMIT进行分割,多少个COMMIT对应的多个提交操作
    # at 461

    -- 第二个事物 插入数据
    #171010 16:50:57 server id 109 end_log_pos 537 CRC32 0xfd3f88a0 Query thread_id=3487 exec_time=0 error_code=0 -- 开始时间 SERVER_ID 线程ID 执行时长 是否有错误
    SET TIMESTAMP=1507625457/*!*/;-- 时间戳标志 来源于FROM_UNIXTIME
    BEGIN
    /*!*/;
    # at 537
    #171010 16:50:57 server id 109 end_log_pos 595 CRC32 0x42dbbe1e Table_map: `wang0728`.`wang1010` mapped to number 94
    # at 595
    #171010 16:50:57 server id 109 end_log_pos 642 CRC32 0xf93f3fdf Write_rows: table id 94 flags: STMT_END_F -- Write_rows代表ROWS_EVENT分为三种:WRITE_ROWS_EVENT,UPDATE_ROWS_EVENT,DELETE_ROWS_EVENT,分别对应insert,update和delete操作。

    BINLOG '
    8YncWRNtAAAAOgAAAFMCAAAAAF4AAAAAAAEACHdhbmcwNzI4AAh3YW5nMTAxMAACAw8CPAADHr7b
    Qg==
    8YncWR5tAAAALwAAAIICAAAAAF4AAAAAAAEAAgAC//wCAAAABmZhbmdmYd8/P/k=
    '/*!*/;
    ### INSERT INTO `wang0728`.`wang1010` -- 执行具体SQL 逻辑SQL语句 insert into wang1010 values(2,'fangfa');
    ### SET
    ### @1=2 /* INT meta=0 nullable=1 is_null=0 */
    ### @2='fangfa' /* VARSTRING(60) meta=60 nullable=1 is_null=0 */
    # at 642
    #171010 16:50:57 server id 109 end_log_pos 673 CRC32 0xeffda5ba Xid = 1856-- 在事务提交时,不管是STATEMENT还是ROW格式的binlog,都会在末尾添加一个XID_EVENT事件代表事务的结束。该事件记录了该事务的ID,在MySQL进行崩溃恢复时,根据事务在binlog中的提交情况来决定是否提交存储引擎中状态为prepared的事务。
    COMMIT/*!*/;-- 执行提交操作
    # at 673

    -- 第三个事物 修改数据
    #171010 16:51:15 server id 109 end_log_pos 749 CRC32 0x367d25aa Query thread_id=3487 exec_time=0 error_code=0
    SET TIMESTAMP=1507625475/*!*/;
    BEGIN
    /*!*/;
    # at 749
    #171010 16:51:15 server id 109 end_log_pos 807 CRC32 0xb1f654d9 Table_map: `wang0728`.`wang1010` mapped to number 94
    # at 807
    #171010 16:51:15 server id 109 end_log_pos 864 CRC32 0x88e157f4 Update_rows: table id 94 flags: STMT_END_F

    BINLOG '
    A4rcWRNtAAAAOgAAACcDAAAAAF4AAAAAAAEACHdhbmcwNzI4AAh3YW5nMTAxMAACAw8CPAAD2VT2
    sQ==
    A4rcWR9tAAAAOQAAAGADAAAAAF4AAAAAAAEAAgAC///8AQAAAAV3YW5ncfwBAAAABHl1YW70V+GI
    '/*!*/;
    ### UPDATE `wang0728`.`wang1010`
    ### WHERE
    ### @1=1 /* INT meta=0 nullable=1 is_null=0 */
    ### @2='wangq' /* VARSTRING(60) meta=60 nullable=1 is_null=0 */ -- 逻辑SQL语句 update wang1010 set name='yuan' where id=1;
    ### SET
    ### @1=1 /* INT meta=0 nullable=1 is_null=0 */
    ### @2='yuan' /* VARSTRING(60) meta=60 nullable=1 is_null=0 */
    # at 864
    #171010 16:51:15 server id 109 end_log_pos 895 CRC32 0x6065d0a5 Xid = 1857
    COMMIT/*!*/;
    # at 895

    -- 第四个事物 删除数据
    #171010 16:51:27 server id 109 end_log_pos 971 CRC32 0x313a7b00 Query thread_id=3487 exec_time=0 error_code=0
    SET TIMESTAMP=1507625487/*!*/;
    BEGIN
    /*!*/;
    # at 971
    #171010 16:51:27 server id 109 end_log_pos 1029 CRC32 0xfecc1bd5 Table_map: `wang0728`.`wang1010` mapped to number 94
    # at 1029
    #171010 16:51:27 server id 109 end_log_pos 1074 CRC32 0xbae577a2 Delete_rows: table id 94 flags: STMT_END_F

    BINLOG '
    D4rcWRNtAAAAOgAAAAUEAAAAAF4AAAAAAAEACHdhbmcwNzI4AAh3YW5nMTAxMAACAw8CPAAD1RvM
    /g==
    D4rcWSBtAAAALQAAADIEAAAAAF4AAAAAAAEAAgAC//wBAAAABHl1YW6id+W6
    '/*!*/;
    ### DELETE FROM `wang0728`.`wang1010` -- 逻辑SQL语句 delete from wang1010 where id=1;
    ### WHERE
    ### @1=1 /* INT meta=0 nullable=1 is_null=0 */
    ### @2='yuan' /* VARSTRING(60) meta=60 nullable=1 is_null=0 */
    # at 1074
    #171010 16:51:27 server id 109 end_log_pos 1105 CRC32 0x36a54189 Xid = 1858 --
    COMMIT/*!*/;
    DELIMITER ;
    # End of log file
    ROLLBACK /* added by mysqlbinlog */; -- 为什么最后存在一个ROLLBACK ??
    /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
    /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

    -- 恢复数据的方法 mysqlbinlog MySQL-bin.000011 | mysql -uroot -p111111
    或者
    mysqlbinlog --start-position=134 --stop-position=330 yueliangdao_binglog.000001 >test1.txt
    进入MYSQL导入
    mysql> source c:\test1.txt

    参考 http://www.cnblogs.com/ivictor/p/5780037.html

  • 相关阅读:
    数值拓展与函数拓展
    正则小记
    Struts2(三)配置详解
    Struts2(二)工作原理
    Struts2(一)基本配置
    Eclipse新建动态web工程项目出现红叉解决方案
    Spring系列之AOP
    Java动态代理的实现机制
    Spring系列之装配Bean
    Spring系列之基本配置
  • 原文地址:https://www.cnblogs.com/qcfeng/p/7647192.html
Copyright © 2011-2022 走看看