当前位置: 首页 > news >正文

连云港专业做网站城市分站cms

连云港专业做网站,城市分站cms,佛山网页设计公司,深圳网站开发语言借用binlog2sql工具轻松解析MySQL的binlog文件 简介依赖配置用户权限选项配置案例#xff1a;误UPDATE表数据回滚binlog2sql VS mysqlbinlog 看腻文章了就来听听视频演示吧#xff1a;https://www.bilibili.com/video/BV1Zj411k7VW/ 简介 binlog2sql是美团大众点评开源的一… 借用binlog2sql工具轻松解析MySQL的binlog文件 简介依赖配置用户权限选项配置案例误UPDATE表数据回滚binlog2sql VS mysqlbinlog 看腻文章了就来听听视频演示吧https://www.bilibili.com/video/BV1Zj411k7VW/ 简介 binlog2sql是美团大众点评开源的一款用于解析binlog的工具。可用于提取操作的SQL及生成回滚SQL。 依赖配置 github项目 https://github.com/danfengcao/binlog2sql github打不开可去gitee下载 https://gitee.com/damned_gentleness/binlog2sql/tree/master/ unzip binlog2sql-master.zip cd binlog2sql-master/ # 需要安装的Python依赖 [rootdb01 binlog2sql-master]# cat requirements.txt PyMySQL0.7.11 wheel0.29.0 mysql-replication0.13 # 指定使用阿里云的镜像能连网的方式 pip install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com阿里云http://mirrors.aliyun.com/pypi/simple/中国科技大学https://pypi.mirrors.ustc.edu.cn/simple/清华大学https://pypi.tuna.tsinghua.edu.cn/simple/中国科学技术大学http://pypi.mirrors.ustc.edu.cn/simple/ MySQL server必须设置以下参数: [mysqld] server_id 1 log_bin /var/log/mysql/mysql-bin.log max_binlog_size 1G binlog_format row binlog_row_image full用户权限 最小权限集合 select需要读取server端information_schema.COLUMNS表获取表结构的元信息拼接成可视化的sql语句super/replication client两个权限都可以需要执行’SHOW MASTER STATUS’, 获取server端的binlog列表replication slave通过BINLOG_DUMP协议获取binlog内容的权限 -- 授权语句 GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO xxoo;由于是伪装成slave来获取主的二进制事件故无需对binlog有可读权限。 先切进python脚步文件binlog2sql.py所在目录 [rootdba binlog2sql-master]# cd binlog2sql [rootdba binlog2sql]# ll total 36 -rwxr-xr-x 1 root root 7747 Oct 12 2018 binlog2sql.py -rwxr-xr-x 1 root root 11581 Oct 12 2018 binlog2sql_util.py -rw-r--r-- 1 root root 92 Oct 12 2018 __init__.py选项配置 解析出标准SQL [rootdba binlog2sql]# python binlog2sql.py -h127.0.0.1 -P3306 -uroot -proot -dmdb -t t_student --start-filemysql-bin.000011 USE mdb; CREATE ALGORITHMUNDEFINED DEFINERroot% SQL SECURITY DEFINER VIEW t_view AS select * from heartbeat; USE mdb; create table test2 (id int,name text); USE mdb; DROP TABLE test2 /* generated by server */; USE db_test; create table tblpky(id int primary key auto_increment,name text); USE mdb; create table t_student(id int,name varchar(18),class int,score varchar(18)); INSERT INTO mdb.t_student(class, score, id, name) VALUES (1, 66, 1, a); #start 2418 end 2638 time 2023-02-23 02:22:10 INSERT INTO mdb.t_student(class, score, id, name) VALUES (1, 58, 2, b); #start 2418 end 2638 time 2023-02-23 02:22:10 INSERT INTO mdb.t_student(class, score, id, name) VALUES (2, 86, 3, c); #start 2418 end 2638 time 2023-02-23 02:22:10 INSERT INTO mdb.t_student(class, score, id, name) VALUES (2, 78, 4, d); #start 2418 end 2638 time 2023-02-23 02:22:10 UPDATE mdb.t_student SET class2, score89, id3, namec WHERE class2 AND score86 AND id3 AND namec LIMIT 1; #start 2734 end 2927 time 2023-02-23 02:28:38 DELETE FROM mdb.t_student WHERE class1 AND score58 AND id2 AND nameb LIMIT 1; #start 3023 end 3201 time 2023-02-23 02:28:55 INSERT INTO mdb.t_student(class, score, id, name) VALUES (1, 48, 5, e); #start 3297 end 3475 time 2023-02-23 02:29:32参数选项 python binlog2sql.py --help解析模式: --stop-never 持续解析binlog。可选。默认False同步至执行命令时最新的binlog位置。 -K, --no-primary-key 对INSERT语句去除主键。可选。默认False -B, --flashback 生成回滚SQL可解析大文件不受内存限制。可选。默认False。与stop-never或no-primary-key不能同时添加。 --back-interval -B模式下每打印一千行回滚SQL加一句SLEEP多少秒如不想加SLEEP请设为0。可选。默认1.0。解析范围控制: --start-file 起始解析文件只需文件名无需全路径 。必须。 --start-position/--start-pos 起始解析位置。可选。默认为start-file的起始位置。 --stop-file/--end-file 终止解析文件。可选。默认为start-file同一个文件。若解析模式为stop-never此选项失效。 --stop-position/--end-pos 终止解析位置。可选。默认为stop-file的最末位置若解析模式为stop-never此选项失效。 --start-datetime 起始解析时间格式%Y-%m-%d %H:%M:%S。可选。默认不过滤。 --stop-datetime 终止解析时间格式%Y-%m-%d %H:%M:%S。可选。默认不过滤。对象过滤: -d, --databases 只解析目标db的sql多个库用空格隔开如-d db1 db2。可选。默认为空。 -t, --tables 只解析目标table的sql多张表用空格隔开如-t tbl1 tbl2。可选。默认为空。 --only-dml 只解析dml忽略ddl。可选。默认False。 --sql-type 只解析指定类型支持INSERT, UPDATE, DELETE。多个类型用空格隔开如--sql-type INSERT DELETE。可选。默认为增删改都解析。用了此参数但没填任何类型则三者都不解析。案例误UPDATE表数据回滚 忘带where条件的误UPDATE整张表 mysql select * from t_student; -------------------------- | id | name | class | score | -------------------------- | 1 | a | 1 | 66 | | 3 | c | 2 | 89 | | 4 | d | 2 | 78 | | 5 | e | 1 | 48 | -------------------------- 4 rows in set (0.00 sec)mysql update t_student set scorefailure; Query OK, 4 rows affected (0.01 sec) Rows matched: 4 Changed: 4 Warnings: 0mysql select * from t_student; ---------------------------- | id | name | class | score | ---------------------------- | 1 | a | 1 | failure | | 3 | c | 2 | failure | | 4 | d | 2 | failure | | 5 | e | 1 | failure | ---------------------------- 4 rows in set (0.00 sec)找到误操作记录的binlog文件 mysql show master status\G *************************** 1. row ***************************File: mysql-bin.000011Position: 3899Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 0ee6241a-f240-11ec-9388-080027be95b2:1-169719 1 row in set (0.00 sec)根据误操作人提供的大致误操作时间过滤数据 [rootdba binlog2sql]# python binlog2sql.py -h127.0.0.1 -P3306 -uroot -proot -dmdb -tt_student --start-filemysql-bin.000011 --start-datetime2023-02-23 02:36:17 --stop-datetime2023-02-23 02:38:17UPDATE mdb.t_student SET class1, scorefailure, id1, namea WHERE class1 AND score66 AND id1 AND namea LIMIT 1; #start 3571 end 3868 time 2023-02-23 02:36:27 UPDATE mdb.t_student SET class2, scorefailure, id3, namec WHERE class2 AND score89 AND id3 AND namec LIMIT 1; #start 3571 end 3868 time 2023-02-23 02:36:27 UPDATE mdb.t_student SET class2, scorefailure, id4, named WHERE class2 AND score78 AND id4 AND named LIMIT 1; #start 3571 end 3868 time 2023-02-23 02:36:27 UPDATE mdb.t_student SET class1, scorefailure, id5, namee WHERE class1 AND score48 AND id5 AND namee LIMIT 1; #start 3571 end 3868 time 2023-02-23 02:36:27可以知道误操作的位置点在3571-3868之间和时间点再用flashback模式( -B )生成回滚sql检查回滚sql是否正确 [rootdba binlog2sql]# python binlog2sql.py -h127.0.0.1 -P3306 -uroot -proot -dmdb -tt_student --start-filemysql-bin.000011 --start-datetime2023-02-23 02:36:17 --stop-datetime2023-02-23 02:38:17 -B tb_student_rb.sql[rootdba binlog2sql]# cat tb_student_rb.sql UPDATE mdb.t_student SET class1, score48, id5, namee WHERE class1 AND scorefailure AND id5 AND namee LIMIT 1; #start 3571 end 3868 time 2023-02-23 02:36:27 UPDATE mdb.t_student SET class2, score78, id4, named WHERE class2 AND scorefailure AND id4 AND named LIMIT 1; #start 3571 end 3868 time 2023-02-23 02:36:27 UPDATE mdb.t_student SET class2, score89, id3, namec WHERE class2 AND scorefailure AND id3 AND namec LIMIT 1; #start 3571 end 3868 time 2023-02-23 02:36:27 UPDATE mdb.t_student SET class1, score66, id1, namea WHERE class1 AND scorefailure AND id1 AND namea LIMIT 1; #start 3571 end 3868 time 2023-02-23 02:36:27确认回滚sql语句无误并回滚。登录mysql确认检查数据回滚成功。 mysql select * from t_student; ---------------------------- | id | name | class | score | ---------------------------- | 1 | a | 1 | failure | | 3 | c | 2 | failure | | 4 | d | 2 | failure | | 5 | e | 1 | failure | ---------------------------- 4 rows in set (0.00 sec)mysql source /root/binlog2sql-master/binlog2sql/tb_student_rb.sql Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0mysql select * from t_student; -------------------------- | id | name | class | score | -------------------------- | 1 | a | 1 | 66 | | 3 | c | 2 | 89 | | 4 | d | 2 | 78 | | 5 | e | 1 | 48 | -------------------------- 4 rows in set (0.00 sec)binlog2sql VS mysqlbinlog 限制: mysql server必须开启离线模式下不能解析 – 基于BINLOG_DUMP协议来获取binlog内容 – 需要读取server端information_schema.COLUMNS表获取表结构的元信息拼接成可视化的sql语句参数 binlog_row_image 必须为FULL暂不支持MINIMAL解析速度不如mysqlbinlog 优点: 纯Python开发安装与使用都很简单自带flashback、no-primary-key解析模式无需再装补丁flashback模式下更适合闪回实战解析为标准SQL方便理解、筛选代码容易改造可以支持更多个性化解析 参考链接https://www.cnblogs.com/ivictor/p/6418409.html
http://www.hkea.cn/news/14307416/

相关文章:

  • 用摄像头直播网站怎么做做影视网站有什么风险
  • 怎么建国外网站wordpress cg主题
  • 亳州做网站的公司网站建设试用
  • wordpress首页页面seo网站优化排名
  • 哪里可以做寄生虫网站合肥网络科技有限公司做网站
  • 响应式网站视频重庆网站建设公司 菠拿拿
  • 做网站 空间还是服务器展示型网站有哪些内容
  • python 网站开发 环境网站域名的所有权
  • 自助式建网站wordpress用户权限说明
  • 番禺高端网站建设公司wordpress怎么做链接
  • 做网站主机电脑浙江省建设厅干部学校网站
  • 来个网站吧好人一生平安2021公司网站谁负责做
  • win7做本地网站2010年青海省建设厅网站
  • 企业网站外包托管推广建设部注册网站
  • 给个网站最新的2021企业网站怎样优化
  • 做网站开发需要培训吗免费的短视频软件app下载
  • 免费的网站域名和空间福建建设厅网站
  • iis7 asp网站 503公众号开发者有什么用
  • 企业网站建设大概费用免费网络电视直播软件
  • 开一个网站建设公司需要什么哈尔滨网站优化指导
  • 中职 网站建设与管理wordpress本地怎么迁移到服务器
  • 竞品网站分析江苏中益建设官方网站
  • 焦作网站建设服务南宁网站建设电话咨询
  • 专门做团购的网站上上海网站建设设计
  • 国外做地铁设计的公司网站微信公众号和小程序的区别
  • 禁止下载app网站后端开发需要掌握什么技术
  • 手机营销型网站制作做电商运营需要具备什么能力
  • 做网站需要学会什么软件建筑工程网页模板
  • 网站开发盈利模式昆明的房产网站建设
  • 烟台企业网站wordpress多格式视频播放插件