【MySQL】数据库闪回工具--binlog2sql
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,[root@wallet01 ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [root@wallet01 ~]# p
千家信息网最后更新 2026年11月02日【MySQL】数据库闪回工具--binlog2sql
[root@wallet01 ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [root@wallet01 ~]# python -VPython 2.7.5[root@wallet01 ~]# yum install -y python-pip[root@wallet01 ~]# pip -Vpip 8.1.2 from /usr/lib/python2.7/site-packages (python 2.7)[root@wallet01 ~]# git clone https://github.com/danfengcao/binlog2sql.gitInitialized empty Git repository in /root/binlog2sql/.git/remote: Enumerating objects: 323, done.remote: Total 323 (delta 0), reused 0 (delta 0), pack-reused 323Receiving objects: 100% (323/323), 151.51 KiB | 245 KiB/s, done.Resolving deltas: 100% (170/170), done.[root@wallet01 ~]# cd binlog2sql[root@wallet01 binlog2sql]# pip install -r requirements.txt[root@wallet01 binlog2sql]# cd binlog2sql/[root@wallet01 binlog2sql]# python binlog2sql.py --helpusage: binlog2sql.py [-h HOST] [-u USER] [-p [PASSWORD [PASSWORD ...]]] [-P PORT] [--start-file START_FILE] [--start-position START_POS] [--stop-file END_FILE] [--stop-position END_POS] [--start-datetime START_TIME] [--stop-datetime STOP_TIME] [--stop-never] [--help] [-d [DATABASES [DATABASES ...]]] [-t [TABLES [TABLES ...]]] [--only-dml] [--sql-type [SQL_TYPE [SQL_TYPE ...]]] [-K] [-B] [--back-interval BACK_INTERVAL] --start-file --起始解析文件--stop-file --终止解析文件--start-position --起始解析位置--stop-position --终止解析位置--start-datetime --起始解析时间,格式'%Y-%m-%d %H:%M:%S'。--stop-datetime --终止解析时间,格式'%Y-%m-%d %H:%M:%S'。-d --仅解析目标db的sql-t --仅解析目标table的sql--only-dml --仅解析dml,忽略ddl。--sql-type --仅解析指定类型,支持insert,update,delete。-B --生成回滚SQL[root@wallet01 ~]# mysql -uroot -pEnter password: mysql> grant select,replication client,replication slave on *.* to 'fb'@'%' identified by 'fb@2019'; Query OK, 0 rows affected (0.05 sec)mysql> flush privileges;Query OK, 0 rows affected (0.11 sec)mysql> show master status;+------------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+------------------+----------+--------------+------------------+-------------------+| mysql-bin.000008 | 120 | | | |+------------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)mysql> select now();+---------------------+| now() |+---------------------+| 2019-10-12 17:18:22 |+---------------------+1 row in set (0.06 sec)mysql> use gsoamysql> select count(*) from bd_city;+----------+| count(*) |+----------+| 372 |+----------+1 row in set (0.00 sec)mysql> begin;Query OK, 0 rows affected (0.00 sec)mysql> delete from bd_city;Query OK, 372 rows affected (0.09 sec)mysql> commit;Query OK, 0 rows affected (0.04 sec)mysql> select count(*) from bd_city;+----------+| count(*) |+----------+| 0 |+----------+1 row in set (0.01 sec)mysql> select now();+---------------------+| now() |+---------------------+| 2019-10-12 17:22:26 |+---------------------+1 row in set (0.00 sec)恢复已提交事务中删除的记录[root@wallet01 binlog2sql]# python binlog2sql.py -hlocalhost -P3306 -ufb -p'fb@2019' -dgsoa -tbd_city \--start-file='mysql-bin.000008' --only-dml --sql-type=delete \--start-datetime='2019-10-12 17:18:22' --stop-datetime='2019-10-12 17:22:26' >fb.log[root@wallet01 binlog2sql]# more fb.log DELETE FROM `gsoa`.`bd_city` WHERE `status`='1' AND `parent_name`='中国' AND `code`='110000' AND `name`='北京市' AND `parent_code`='CN' LIMIT 1; #start 423 end 8756 time 2019-10-12 17:21:26[root@wallet01 binlog2sql]# tail -n 1 fb.log DELETE FROM `gsoa`.`bd_city` WHERE `status`='1' AND `parent_name`='' AND `code`='CN' AND `name`='中国' AND `parent_code`='' LIMIT 1; #start 423 end 19319 time 2019-10-12 17:21:26[root@wallet01 binlog2sql]# python binlog2sql.py -hlocalhost -P3306 -ufb -p'fb@2019' -dgsoa -tbd_city \--start-file='mysql-bin.000008' --start-position=423 --stop-position=19319 -B > rollback.sql[root@wallet01 binlog2sql]# more rollback.sql | grep '北京'INSERT INTO `gsoa`.`bd_city`(`status`, `parent_name`, `code`, `name`, `parent_code`) VALUES ('1', '中国', '110000', '北京市', 'CN'); #start 423 end 8756 time 2019-10-12 17:21:26[root@wallet01 binlog2sql]# mysql -uroot -p < rollback.sql Enter password: [root@wallet01 ~]# mysql -uroot -pEnter password: mysql> use gsoamysql> select count(*) from bd_city;+----------+| count(*) |+----------+| 372 |+----------+1 row in set (0.00 sec)
中国
北京
起始
位置
文件
时间
格式
目标
北京市
事务
类型
支持
生成
工具
数据
数据库
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
小米移动互联网科技园
互联网科技公司简介
疫情对互联网科技公司影响
互联网巨头科技公司
互联网科技社
未来的互联网科技
易通互联网络科技有限公司
郑州华宇互联网科技
上海亿帐通互联网科技
镁科技互联网资讯平台
上海电发互联网科技有限公司
洛阳昕诺飞互联网科技有限公司
黑科技 体验场景 互联网大会
互联网第三次科技革命特征
雨阳互联网卡科技有限公司
新氧科技和美国互联网有关系吗
上海同邻互联网科技有限公司规模
互联网公司属于科技吗
互联网科技大会大佬
互联网领先科技成果宣传视频
上海喔噻互联网科技有限公司
互联网科技公司排名
平安科技 互联网
南平创想时代互联网科技有限公司
深圳市优智互联网科技有限公司
广州新华互联网科技学校电竞方面
元气玛特互联网科技公司是外包吗
深圳无忧互联网科技
上海乐五互联网科技有限公司
陕西九四连强互联网科技有限公司