【MySQL】数据库闪回工具--binlog2sql
发表于:2024-10-10 作者:千家信息网编辑
千家信息网最后更新 2024年10月10日,[root@wallet01 ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [root@wallet01 ~]# p
千家信息网最后更新 2024年10月10日【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安全错误
数据库的锁怎样保障安全
金山区专业软件开发优势
更改数据库前缀
合肥众道生鲜软件开发
per340服务器
维晋资讯网具有哪些数据库
软件开发模型 第四代
网络安全中的补丁
苏州道凡互联网科技有限公司
问卷调查怎么整理数据库
什么网络技术火
仓储管理系统数据库分工
数据库概念 pdf
小米互联网科技公司
我是个女生学习的专业是软件开发
ibm刀片式服务器管理口
服务器怎么设置以u盘启动
服务器电脑如何组装
腾讯网络安全首席执行官
应用软件开发基础完整中文版
网络安全法修改后多久生效
工商执照软件开发
如何关掉代理服务器连接
我国网络安全认知
软件开发模型 第四代
revit数据库怎么看
问卷调查怎么整理数据库
夕宣网络技术室
使用云服务器隐私会泄露吗
做vfp数据库
服务器配件供应分析