您现在的位置是:亿华云 > 人工智能
利用binlog2sql快速闪回误删除数据 - 别拿豆包不当干粮
亿华云2025-10-03 20:18:05【人工智能】8人已围观
简介今儿抽出时间,给大家分享一篇利用binlog2sql闪回工具,来恢复误删除的数据。我们都知道binlog的作用是备份恢复和完成MySQL的主从复制功能。利用mysqlbinlog工具可以进行基于时间点
今儿抽出时间,利用给大家分享一篇利用binlog2sql闪回工具,速闪删除数据来恢复误删除的回误数据。我们都知道binlog的别拿不当作用是备份恢复和完成MySQL的主从复制功能。利用mysqlbinlog工具可以进行基于时间点或者位置偏移量的豆包数据恢复工作,在生产环境中遇到误删除,干粮改错数据的利用情况,那是速闪删除数据常有的事儿。我们都知道Oracle数据库有闪回功能,回误而MySQL本身没有自带闪回,别拿不当但我们可以使用binlog2sql来完成这项工作。豆包
我们都知道binlog是干粮以event作为单位,来记录数据库变更的利用数据信息,闪回就是速闪删除数据可以帮助我们重现这些变化数据信息之前的操作。云南idc服务商也就是回误说对于insert操作,会生成delete语句,反之delete操作,会生成insert语句。对于update操作,也会生成相反的update语句。这款工具只能使用在binlog格式为row模式下。
下面进行实战演练:
binlog2sql工具的下载地址: https://github.com/danfengcao/binlog2sql
***步:环境准备安装各种依赖的工具包列表
python-pip , PyMySQL , python-mysql-replication, wheel argparse第二步:解压binlog2sql软件,命令如下
unzip binlog2sql-master.zip cd binlog2sql-master pip install –r requirements.txt第三步:通过python binlog2sql.py --help命令,来查看重要参数的使用;
-B, --flashback 生成回滚语句
--start-file 需要解析的binlog文件
--start-position 解析binlog的起始位置
--stop-position解析binlog的结束位置
--start-datetime 从哪个时间点的binlog开始解析,格式必须为datetime
--stop-datetime 到哪个时间点的binlog停止解析,格式必须为datetime
-d, --databases 只输出目标db的网站模板sql
-t, --tables 只输出目标tables的sql
第四步:开始模拟数据删除
首先删除掉zs库下,t表中的数据
root@db 14:26: [zs]> select * from t; +----+------+---------+ | id | name | address | +----+------+---------+ | 1 | aaa | bj | | 2 | bbb | sh | | 3 | ccc | gz | | 4 | ddd | sy | | 5 | eee | fj | +----+------+---------+ 5 rows in set (0.00 sec) root@db 14:26: [zs]> delete from t; Query OK, 5 rows affected (0.04 sec) root@db 14:27: [zs]> select * from t; Empty set (0.00 sec)第五步:需要创建一个闪回用户
create user zs_test@% identified by 123456; grant select,replication slave,replication client on *.* to zs_test@% ; flush privileges;第六步:确定当前binlog文件和position位置
root@db 14:41: [zs]> show master status; +---------------------+----------+--------------+------------------+------------------------------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +---------------------+----------+--------------+------------------+------------------------------------------+ | mysql-binlog.000002 | 2091 | | | e10f0ead-d595-11e7-82cb-080027cd683a:1-8 | +---------------------+----------+--------------+------------------+------------------------------------------+可以看到当前binlog是:mysql-binlog.000002
位置偏移量:2091
第七步:需要预估下时间,误操作的时间范围应该在下午2点20分到2点30分之间。命令如下:
python binlog2sql.py -h192.168.56.102 -P3306 -uzs_test -p123456 -dzs -tt --start-file=mysql-binlog.000002 --start-datetime=2017-11-30 14:20:00 --stop-datetime=2017-11-30 14:30:00输出结果:
DELETE FROM zs.t WHERE address=bj AND id=1 AND name=aaa LIMIT 1; #start 1214 end 1427 time 2017-11-30 14:27:46 DELETE FROM zs.t WHERE address=sh AND id=2 AND name=bbb LIMIT 1; #start 1214 end 1427 time 2017-11-30 14:27:46 DELETE FROM zs.t WHERE address=gz AND id=3 AND name=ccc LIMIT 1; #start 1214 end 1427 time 2017-11-30 14:27:46 DELETE FROM zs.t WHERE address=sy AND id=4 AND name=ddd LIMIT 1; #start 1214 end 1427 time 2017-11-30 14:27:46 DELETE FROM zs.t WHERE address=fj AND id=5 AND name=eee LIMIT 1; #start 1214 end 1427 time 2017-11-30 14:27:46从解析结果中我们了解到,误操作sql的位置是在1214~1427之间;这样就可以进一步过滤,使用flashback模式生成回滚sql;
命令如下:
python binlog2sql.py -h192.168.56.102 -P3306 -uzs_test -p123456 -dzs -tt --start-file=mysql-binlog.000002 --start-position=1214 --stop-position=1427 -B >t_rollback.sql查看闪回导出文件:
[root@node3 binlog2sql]# cat t_rollback.sql INSERT INTO `zs`.`t`(`address`, `id`, `name`) VALUES (fj, 5, eee); #start 1214 end 1427 time 2017-11-30 14:27:46 INSERT INTO `zs`.`t`(`address`, `id`, `name`) VALUES (sy, 4, ddd); #start 1214 end 1427 time 2017-11-30 14:27:46 INSERT INTO `zs`.`t`(`address`, `id`, `name`) VALUES (gz, 3, ccc); #start 1214 end 1427 time 2017-11-30 14:27:46 INSERT INTO `zs`.`t`(`address`, `id`, `name`) VALUES (sh, 2, bbb); #start 1214 end 1427 time 2017-11-30 14:27:46 INSERT INTO `zs`.`t`(`address`, `id`, `name`) VALUES (bj, 1, aaa); #start 1214 end 1427 time 2017-11-30 14:27:46第八步:应用回滚文件,恢复数据。命令如下:
/usr/local/mysql/bin/mysql -uroot -proot123 zs < t_rollback.sql第九步:检验恢复数据是否成功
root@db 15:09: [zs]> select * from t; +----+------+---------+ | id | name | address | +----+------+---------+ | 1 | aaa | bj | | 2 | bbb | sh | | 3 | ccc | gz | | 4 | ddd | sy | | 5 | eee | fj | +----+------+---------+ 5 rows in set (0.00 sec)验证恢复数据成功!
工具虽小,但功能很强大,我们要善于发现周围的资源,利用这些武器,来帮助我们学习MySQL数据库!今后老张会继续分享新的干货,供大家学习参考!
云服务器很赞哦!(3)
相关文章
- 十年磨一剑:新华三智能运维工具集的演变之路
- 5、企业注册国内域名需要证件,其它情况一律不需要证件。
- 4.域名的整体品牌营销力
- 4、企业无形资产:通用网站已成为企业网络知识产权的重要组成部分,属于企业的无形资产,也有助于提升企业的品牌形象和技术领先形象。它是企业品牌资产不可或缺的一部分。
- 什么是电源使用效率 (PUE),它是如何计算的?
- 顶级域名可以增加企业品牌的价值。随着经济的快速发展,域名已不再是企业在网络中的独立地位。顶级域名的服务范围、企业产品、综合形象体现等,对于企业单位来说,顶级域名的重要性不言而喻。
- CNAME:对应解析的记录值为域名地址
- 便宜域名使用如何?小白可以买到便宜域名吗?
- 确保数据中心安全必须采取的关键步骤
- 为什么现在中文域名觉得好?使用中文域名有什么好处?
热门文章
站长推荐
AI根技术如何助力产业发展?昇思生态城市行·广州活动给你答案
四、一定要仔细阅读细节
要如何了解反向解析和域名解析?新手该怎么去操作?
4、待所有域名查询结束后可在右侧点击导出结果,即可以excel的文件方式将查询到的结果导出。
数据中心基础设施的透明度和创新
网站页面结构改版,仅是页面样式发生变化,不会对排名、收录有影响;只有涉及到页面URL改变,才会对网站排名、收录有影响。
什么样的邮箱才是安全的电子邮件地址?
域名不仅仅是一个简单的网站。对于有长远眼光的公司来说,在运营网站之前确定一个优秀的域名对有长远眼光的公司来说是非常重要的。这对今后的市场营销、产品营销和企业品牌建设都具有十分重要的意义。优秀的域名是企业在市场竞争中获得持久优势的利器。