社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

dba+开源工具:自动修复MySQL主从同步复制的报错数据(附下载)

DBAplus社群 • 1 年前 • 255 次点击  

工具研发者介绍

贺春旸,dbaplus社群金牌专家,凡普金科和爱钱进DBA团队负责人,《MySQL管理之道:性能调优、高可用与监控》第一&二版、《MySQL运维进阶指南》作者,曾任职于中国移动飞信、安卓机锋网。五次荣获dbaplus年度MVP,致力于MariaDB、MongoDB等开源技术的研究,主要负责数据库性能调优、监控和架构设计。

工具下载:

https://github.com/hcymysql/pt-slave-repair


pt-slave-repair工具简介


MySQL主从复制作为一种常见的数据同步方式,有时候会出现同步错误导致同步中断的情况。手动修复这些同步错误通常需要耗费不少时间和精力,并且对于不熟悉MySQL复制的人来说比较困难。


pt-slave-repair是对原有pt-slave-restart工具的补充,它提供自动修复MySQL主从同步复制的报错数据,以及恢复中断的sql thread复制线程。


自动修复主从同步数据工具具有以下几个优势:


  1. 提高效率:能够快速检测和修复主从同步错误,无需手动干预。这大大节省了DBA的时间和精力,使他们能够更专注于其他重要的任务。


  2. 减少人为错误:手动修复同步错误可能存在人为错误的风险,例如配置错误或操作失误。自动修复工具可以提供一致性和准确性的修复策略,减少了人为错误的可能性。


  3. 实时监控和响应:具有实时监控功能,可以及时检测同步错误的发生,并立即采取相应的修复措施。这有助于及时恢复同步并减少数据延迟。


  4. 自动化运维:可以定期检查主从同步状态并执行修复操作,无需人工干预。这减少了对人工操作和监控的依赖,提高了系统的可靠性和稳定性。


  5. 快速故障恢复:当主从同步错误发生时,自动修复工具能够迅速识别和修复问题,从而减少数据丢失和业务中断的时间。这有助于提高系统的可用性和数据的一致性。


总的来说,自动修复主从同步数据工具能够提高效率、降低风险、实时监控和响应、自动化运维以及快速故障恢复,可以极大地提升同步运行的稳定性和可靠性。


原理


  1. 当检测到同步报错1062(主键冲突、重复)和1032(数据丢失)时,首先要进行binlog环境检查,如果binlog_format不等于ROW并且binlog_row_image不等于FULL,则退出主程序。如果错误号非1062或1032,则直接退出主程序;


  2. 获取show slave status信息,得到binlog、position、gtid信息;


  3. 连接到主库上解析binlog,如果是DELETE删除语句,则直接跳过;


  4. 关闭slave_parallel_workers多线程并行复制;


  5. 如果开启GITD复制模式,启用SET gtid_next方式;如果开启位置点复制模式,启动SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1方式);


  6. 如果是UPDATE/INSERT语句,则把BINLOG解析为具体的SQL,并且反转SQL,将其转换为REPLACE INTO;


  7. 将解析后的REPLACE INTO语句反向插入slave上,使其数据保持一致,然后执行第5步操作;


  8. 将slave设置为read_only只读模式;


  9. 以此类推,最终使其show slave status同步为双YES(同步正常)。


使用


shell> chmod 755 pt-slave-repair

1、前台运行


shell> ./pt-slave-repair -H 192.168.198.239 -P 3346 -u admin -p hechunyang -d test


注:你可以按或者退出程序。


2、后台运行


shell> nohup ./pt-slave-repair -H 192.168.198.239 -P 3346 -u admin -p hechunyang -d test > /dev/null &


注:你可以

shell> pkill pt-slave-repair


退出后台进程。


说明


-e, --enable-binlog Enable binary logging of the restore data


1、-e 选项,默认修复完的数据不会记录在binlog文件里,如果你的slave是二级从库(后面还接着一个slave),那么开启这个选项。


2、开启后台守护进程后,会自动在当前目录下创建一个log目录和{db_name}_INFO.log文件,该文件保存着日志信息。




注:支持MySQL 5.7/8.0和MariaDB数据库,工具适用于Centos7 系统。


下载方式


此工具现通过dbaplus社群免费为大家提供下载使用。若使用过程中有任何问题或建议,可随时与我们联系,欢迎大家试用。


登录以下链接即可下载:
https://github.com/hcymysql/pt-slave-repair


更多开源工具&脚本下载



更多开源工具及脚本获取方式:
  • 关注微信公众号【dbaplus社群】,点击菜单栏【资源下载】
  • 登陆dbaplus社群官网:http://dbaplus.cn/list-142-1.html
>>>>

相关图谱推荐 - 分布式数据库评测指南


dbaplus图谱丨分布式数据库的选型评测指南(附高清电子版)


《分布式数据库评测指南》由dbaplus社群联合发起人韩锋老师与社群共同编制,浓缩了数据库选型评测项精要,评测维度覆盖6大功能(数据库基本功能、数据库内核功能、数据库管理功能、数据库架构功能、数据库开发功能、数据库其他功能)共300+技术项,明晰数据库选型要点及设计思路,让广大数据库从业者在选型路上不再迷茫。

获取方式:关注微信公众号【dbaplus社群】,消息栏回复【图谱】,即可获取下载链接

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/160930
 
255 次点击