zoukankan      html  css  js  c++  java
  • mysqlbinlog 恢复数据到任意时间点

    1. 创建表,插入数据.

    ```

    mysql> create database binlog;

    mysql> create table bt(id int);

    mysql> insert into bi values (1);

    mysql> insert into bi values (2);

    mysql> insert into bi values (3);

    mysql> insert into bi values (4);

    mysql> delete from bt where id=1; 误删除

    mysql> update bt set id=22 where id=2;

    mysql> drop table bt;

    mysql> drop database binlog;

    ```

    1. 我想恢复数据到 delete之前

    查看当前所有的是哪个binlog

    -> ;

    +------------------+----------+--------------+------------------+-------------------+

    | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

    +------------------+----------+--------------+------------------+-------------------+

    | mysql-bin.000006 | 2750 | | | |

    +------------------+----------+--------------+------------------+-------------------+

    1. 查看位置点

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

    +------------------+------+-------------+-----------+-------------+---------------------------------------------------------+

    | Log_name | Pos | Event_type | Server_id | End_log_pos | Info |

    +------------------+------+-------------+-----------+-------------+---------------------------------------------------------+

    | mysql-bin.000006 | 4 | Format_desc | 3307 | 120 | Server ver: 5.6.40-log, Binlog ver: 4 |

    | mysql-bin.000006 | 120 | Query | 3307 | 214 | create database tttt |

    | mysql-bin.000006 | 214 | Query | 3307 | 314 | create database binlog |

    | mysql-bin.000006 | 314 | Query | 3307 | 415 | use `binlog`; create table bt(id int) |

    | mysql-bin.000006 | 415 | Query | 3307 | 489 | BEGIN |

    | mysql-bin.000006 | 489 | Table_map | 3307 | 536 | table_id: 211 (binlog.bt) |

    | mysql-bin.000006 | 536 | Write_rows | 3307 | 576 | table_id: 211 flags: STMT_END_F |

    | mysql-bin.000006 | 576 | Xid | 3307 | 607 | COMMIT /* xid=2101 */ |

    | mysql-bin.000006 | 607 | Query | 3307 | 681 | BEGIN |

    | mysql-bin.000006 | 681 | Table_map | 3307 | 728 | table_id: 211 (binlog.bt) |

    | mysql-bin.000006 | 728 | Write_rows | 3307 | 768 | table_id: 211 flags: STMT_END_F |

    | mysql-bin.000006 | 768 | Xid | 3307 | 799 | COMMIT /* xid=2102 */ |

    | mysql-bin.000006 | 799 | Query | 3307 | 873 | BEGIN |

    | mysql-bin.000006 | 873 | Table_map | 3307 | 920 | table_id: 211 (binlog.bt) |

    | mysql-bin.000006 | 920 | Write_rows | 3307 | 960 | table_id: 211 flags: STMT_END_F |

    | mysql-bin.000006 | 960 | Xid | 3307 | 991 | COMMIT /* xid=2107 */ |

    | mysql-bin.000006 | 991 | Query | 3307 | 1065 | BEGIN |

    | mysql-bin.000006 | 1065 | Table_map | 3307 | 1112 | table_id: 211 (binlog.bt) |

    | mysql-bin.000006 | 1112 | Write_rows | 3307 | 1152 | table_id: 211 flags: STMT_END_F |

    | mysql-bin.000006 | 1152 | Xid | 3307 | 1183 | COMMIT /* xid=2108 */ |

    | mysql-bin.000006 | 1183 | Query | 3307 | 1257 | BEGIN |

    | mysql-bin.000006 | 1257 | Table_map | 3307 | 1304 | table_id: 211 (binlog.bt) |

    | mysql-bin.000006 | 1304 | Delete_rows | 3307 | 1344 | table_id: 211 flags: STMT_END_F |

    | mysql-bin.000006 | 1344 | Xid | 3307 | 1375 | COMMIT /* xid=2110 */ |

    | mysql-bin.000006 | 1375 | Query | 3307 | 1449 | BEGIN |

    | mysql-bin.000006 | 1449 | Table_map | 3307 | 1496 | table_id: 211 (binlog.bt) |

    | mysql-bin.000006 | 1496 | Update_rows | 3307 | 1542 | table_id: 211 flags: STMT_END_F |

    | mysql-bin.000006 | 1542 | Xid | 3307 | 1573 | COMMIT /* xid=2112 */ |

    | mysql-bin.000006 | 1573 | Query | 3307 | 1692 | use `binlog`; DROP TABLE `bt` /* generated by server */ |

    | mysql-bin.000006 | 1692 | Query | 3307 | 1781 | drop database binlog |

    +------------------+------+-------------+-----------+-------------+---------------------------------------------------------+

    1. mysqlbinlog查看详细位置

    [root@db01 data]#mysqlbinlog --base64-output=decode-rows -vvv /data/3307/mysql-bin.000006;

    /*!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

    #190312 15:55:43 server id 3307 end_log_pos 120 CRC32 0x2ec2b6d5     Start: binlog v 4, server v 5.6.40-log created 190312 15:55:43 at startup

    # Warning: this binlog is either in use or was not closed properly.

    ROLLBACK/*!*/;

    # at 120

    #190312 16:49:12 server id 3307 end_log_pos 214 CRC32 0xba00b2bf     Query    thread_id=23    exec_time=0    error_code=0

    SET TIMESTAMP=1552380552/*!*/;

    SET @@session.pseudo_thread_id=23/*!*/;

    SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;

    SET @@session.sql_mode=1073741824/*!*/;

    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 database tttt

    /*!*/;

    # at 214

    #190312 17:18:59 server id 3307 end_log_pos 314 CRC32 0xd2cf5a58     Query    thread_id=23    exec_time=0    error_code=0

    SET TIMESTAMP=1552382339/*!*/;

    create database binlog

    /*!*/;

    # at 314

    #190312 17:19:51 server id 3307 end_log_pos 415 CRC32 0x96788f47     Query    thread_id=23    exec_time=0    error_code=0

    use `binlog`/*!*/;

    SET TIMESTAMP=1552382391/*!*/;

    create table bt(id int)

    /*!*/;

    # at 415

    #190312 17:20:40 server id 3307 end_log_pos 489 CRC32 0x16fe37e6     Query    thread_id=23    exec_time=0    error_code=0

    SET TIMESTAMP=1552382440/*!*/;

    BEGIN

    /*!*/;

    # at 489

    #190312 17:20:40 server id 3307 end_log_pos 536 CRC32 0xcb39e953     Table_map: `binlog`.`bt` mapped to number 211

    # at 536

    #190312 17:20:40 server id 3307 end_log_pos 576 CRC32 0xc8238a32     Write_rows: table id 211 flags: STMT_END_F

    ### INSERT INTO `binlog`.`bt`

    ### SET

    ### @1=1 /* INT meta=0 nullable=1 is_null=0 */

    # at 576

    #190312 17:20:40 server id 3307 end_log_pos 607 CRC32 0x0688157a     Xid = 2101

    COMMIT/*!*/;

    # at 607

    #190312 17:20:46 server id 3307 end_log_pos 681 CRC32 0xa06512e1     Query    thread_id=23    exec_time=0    error_code=0

    SET TIMESTAMP=1552382446/*!*/;

    BEGIN

    /*!*/;

    # at 681

    #190312 17:20:46 server id 3307 end_log_pos 728 CRC32 0xab62c3d3     Table_map: `binlog`.`bt` mapped to number 211

    # at 728

    #190312 17:20:46 server id 3307 end_log_pos 768 CRC32 0x01b4afd0     Write_rows: table id 211 flags: STMT_END_F

    ### INSERT INTO `binlog`.`bt`

    ### SET

    ### @1=2 /* INT meta=0 nullable=1 is_null=0 */

    # at 768

    #190312 17:20:46 server id 3307 end_log_pos 799 CRC32 0xa871612a     Xid = 2102

    COMMIT/*!*/;

    # at 799

    #190312 17:21:52 server id 3307 end_log_pos 873 CRC32 0x058d258b     Query    thread_id=23    exec_time=0    error_code=0

    SET TIMESTAMP=1552382512/*!*/;

    BEGIN

    /*!*/;

    # at 873

    #190312 17:21:52 server id 3307 end_log_pos 920 CRC32 0xcbf9b0d7     Table_map: `binlog`.`bt` mapped to number 211

    # at 920

    #190312 17:21:52 server id 3307 end_log_pos 960 CRC32 0x308c7764     Write_rows: table id 211 flags: STMT_END_F

    ### INSERT INTO `binlog`.`bt`

    ### SET

    ### @1=3 /* INT meta=0 nullable=1 is_null=0 */

    # at 960

    #190312 17:21:52 server id 3307 end_log_pos 991 CRC32 0x1fd35a76     Xid = 2107

    COMMIT/*!*/;

    # at 991

    #190312 17:21:57 server id 3307 end_log_pos 1065 CRC32 0x2ee8076d     Query    thread_id=23    exec_time=0    error_code=0

    SET TIMESTAMP=1552382517/*!*/;

    BEGIN

    /*!*/;

    # at 1065

    #190312 17:21:57 server id 3307 end_log_pos 1112 CRC32 0x90f088e7     Table_map: `binlog`.`bt` mapped to number 211

    # at 1112

    #190312 17:21:57 server id 3307 end_log_pos 1152 CRC32 0x6068e4af     Write_rows: table id 211 flags: STMT_END_F

    ### INSERT INTO `binlog`.`bt`

    ### SET

    ### @1=4 /* INT meta=0 nullable=1 is_null=0 */

    # at 1152

    #190312 17:21:57 server id 3307 end_log_pos 1183 CRC32 0x2611d2c2     Xid = 2108

    COMMIT/*!*/;

    # at 1183

    #190312 17:22:35 server id 3307 end_log_pos 1257 CRC32 0x3945a6f3     Query    thread_id=23    exec_time=0    error_code=0

    SET TIMESTAMP=1552382555/*!*/;

    BEGIN

    /*!*/;

    # at 1257

    #190312 17:22:35 server id 3307 end_log_pos 1304 CRC32 0xbd963afc     Table_map: `binlog`.`bt` mapped to number 211

    # at 1304 1304这个删除事件

    #190312 17:22:35 server id 3307 end_log_pos 1344 CRC32 0x5004ca84     Delete_rows: table id 211 flags: STMT_END_F

    ### DELETE FROM `binlog`.`bt`

    ### WHERE

    ### @1=1 /* INT meta=0 nullable=1 is_null=0 */

    # at 1344

    #190312 17:22:35 server id 3307 end_log_pos 1375 CRC32 0x1bf962db     Xid = 2110

    COMMIT/*!*/;

    # at 1375

    #190312 17:23:04 server id 3307 end_log_pos 1449 CRC32 0xa4635773     Query    thread_id=23    exec_time=0    error_code=0

    SET TIMESTAMP=1552382584/*!*/;

    BEGIN

    /*!*/;

    # at 1449

    #190312 17:23:04 server id 3307 end_log_pos 1496 CRC32 0xd2a3c907     Table_map: `binlog`.`bt` mapped to number 211

    # at 1496

    #190312 17:23:04 server id 3307 end_log_pos 1542 CRC32 0x1138be7d     Update_rows: table id 211 flags: STMT_END_F

    ### UPDATE `binlog`.`bt`

    ### WHERE

    ### @1=2 /* INT meta=0 nullable=1 is_null=0 */

    ### SET

    ### @1=22 /* INT meta=0 nullable=1 is_null=0 */

    # at 1542

    #190312 17:23:04 server id 3307 end_log_pos 1573 CRC32 0x28cc9f00     Xid = 2112

    COMMIT/*!*/;

    # at 1573

    #190312 17:23:35 server id 3307 end_log_pos 1692 CRC32 0x31a3bbb9     Query    thread_id=23    exec_time=0    error_code=0

    SET TIMESTAMP=1552382615/*!*/;

    DROP TABLE `bt` /* generated by server */

    /*!*/;

    # at 1692

    #190312 17:23:49 server id 3307 end_log_pos 1781 CRC32 0xe889af93     Query    thread_id=23    exec_time=0    error_code=0

    SET TIMESTAMP=1552382629/*!*/;

    drop database binlog

    /*!*/;

    DELIMITER ;

    # End of log file

    ROLLBACK /* added by mysqlbinlog */;

    /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

    /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

    1. mysqlbinlog 命令把截取的pos点导出sql语句

    [root@db01 data]#mysqlbinlog --start-position=214 --stop-position=1257 /data/3307/mysql-bin.000006 > /tmp/binlog.sql

    进库导入binlog.sql

    > mysql source /tmp/binlog.sql

    1. 查看找回数据

    mysql> show tables

    +------------------+

    | Tables_in_binlog |

    +------------------+

    | bt |

    +------------------+

    1 row in set (0.00 sec)

     

    mysql> select * from bt;

    +------+

    | id |

    +------+

    | 1 |

    | 2 |

    | 3 |

    | 4 |

    +------+

    4 rows in set (0.00 sec)

  • 相关阅读:
    牛客寒假算法集训 1
    求逆序数——树状数组
    牛客网 被3整除的子序列 区间dp
    SICNU 2019 winter training #2(codeforces #531 Div3)
    iOS 给已有的类添加属性.
    coredata实践
    IOS 数据库升级
    获取当前屏幕显示的viewcontroller
    ios 自顶一个view
    mac 修改文件夹权限.
  • 原文地址:https://www.cnblogs.com/john5yang/p/10518457.html
Copyright © 2011-2022 走看看