服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - dba+开源工具:自动修复MySQL主从同步复制的报错数据

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

2023-08-30 01:00未知服务器之家 Mysql

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

注:你可以按<ctrl+c>或者<ctrl+z>退出程序。

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文件,该文件保存着日志信息。

dba+开源工具:自动修复MySQL主从同步复制的报错数据图片

dba+开源工具:自动修复MySQL主从同步复制的报错数据图片

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

下载方式

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

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

更多开源工具&脚本下载

dba+开源工具:自动修复MySQL主从同步复制的报错数据图片

工具研发者介绍

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

工具下载:https://github.com/hcymysql/pt-slave-repair

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

延伸 · 阅读

精彩推荐
  • Mysql解析在MYSQL语法中使用trim函数删除两侧字符

    解析在MYSQL语法中使用trim函数删除两侧字符

    本篇文章是对在MYSQL语法中使用trim函数删除两侧字符的实现方法进行了详细的分析介绍,需要的朋友参考下 ...

    MYSQL教程网6222020-01-05
  • MysqlMySQL日志文件详解

    MySQL日志文件详解

    这篇文章主要介绍了MySQL日志文件详解,本文分别讲解了错误日志、二进制日志、通用查询日志、慢查询日志、Innodb的在线redo日志、更新日志等日志类型和作...

    MYSQL教程网4342020-05-13
  • Mysql浅谈MySQL安装starting the server失败的解决办法

    浅谈MySQL安装starting the server失败的解决办法

    如果电脑是不是第一次安装MySQL,一般会出现报错情况,starting the server失败,通常是因为上次安装的该软件未清除干净,本文就详细的介绍一下解决方法,...

    We.Spring8982021-11-15
  • Mysqlmysql 使用存储过程实现树节点的获取方法

    mysql 使用存储过程实现树节点的获取方法

    这篇文章主要介绍了mysql 使用存储过程实现树节点的获取方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值...

    前方太黑暗5712021-01-21
  • MysqlMySQL中锁的相关问题

    MySQL中锁的相关问题

    这篇文章主要介绍了MySQL中锁的相关问题,本文给大家介绍了从对数据操作的粒度分 ,从对数据操作的类型分,给大家介绍的非常详细,需要的朋友可以参考...

    也许今天12092022-02-13
  • Mysqlmysql 日期和时间函数

    mysql 日期和时间函数

    这里是一个使用日期函数的例子。下面的查询选择所有 date_col 值在最后 30 天内的记录。 ...

    mysql教程网4292019-11-04
  • MysqlMySQL服务器 IO 100%的分析与优化方案

    MySQL服务器 IO 100%的分析与优化方案

    这篇文章主要给大家介绍了关于MySQL服务器 IO 100%的相关资料,文中通过示例代码介绍的介绍非常详细,对大家学习或者使用mysql具有一定的参考学习价值,...

    wangdong4872019-06-19
  • MysqlMySQL字符集的基本类型与统一字符集分析

    MySQL字符集的基本类型与统一字符集分析

    此文章主要向大家描述的是MySQL字符集的基本类型,以及统一字符集的实际操作方法,下面就是文章的主要内容描述。 ...

    MYSQL教程网2072019-11-23