首页 > 数据库 >MySQL 主从自动修复工具"pt-slave-repair"

MySQL 主从自动修复工具"pt-slave-repair"

时间:2023-08-30 11:00:14浏览次数:46  
标签:repair 同步 slave 修复 pt 主从

工具下载:

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或103则直接退出主程序;

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(同步正常)。

使用方法:

# chmod 755 pt-slave-repair

# ./pt-slave-repair -H 192.168.198.239 -P 3346 -u admin -p hankyoon -d test

后台运行:
nohup ./pt-slave-repair -H 192.168.198.239 -P 3346 -u admin -p hankyoon -d test > /dev/null &

说明:

-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 系统。

参考:https://mp.weixin.qq.com/s/kRNfyp3OVBO_f2gLk7zUow

标签:repair,同步,slave,修复,pt,主从
From: https://www.cnblogs.com/hankyoon/p/17666729.html

相关文章

  • PPT主题颜色ColorFormat、ColorScheme、ColorEffect 对象在PPT中的使用
    一、ColorFormat对象代表单色对象的颜色、带有过渡或图案填充的对象的前景或背景色,或者指针的颜色。可以将颜色设为显式的红-绿-蓝值(使用RGB属性)或设为配色方案中的一种颜色(使用SchemeColor属性)。使用下表中列出的属性之一返回ColorFormat对象。使用此属性对此对象如......
  • 论文解读(AdSPT)《Adversarial Soft Prompt Tuning for Cross-Domain Sentiment Analysi
    Note:[wechat:Y466551|可加勿骚扰,付费咨询]论文信息论文标题:AdversarialSoftPromptTuningforCross-DomainSentimentAnalysis论文作者:HuiWu、XiaodongShi论文来源:2022ACL论文地址:download 论文代码:download视屏讲解:click1介绍 动机:直接使用固定的预定义模......
  • slave跳过错误
    mysql主从复制,经常会遇到错误而导致slave端复制中断,这个时候一般就需要人工干预,跳过错误才能继续跳过错误有两种方式:一、跳过指定数量的事务mysql>slavestop;mysql>SETGLOBALSQL_SLAVE_SKIP_COUNTER=1    #跳过一个事务mysql>slavestart二、修改mysql的配置文件通过......
  • 03-JavaScript
    变量:变量的声明和赋值:使用var、let或const关键字声明变量,并赋予其一个值。基本数据类型:布尔值、数字、字符串、undefined、null等基本数据类型的概念和使用。类型的转换:数据类型之间的转换,包括显式转换和隐式转换。运算符:算术运算符、比较运算符、逻辑运算符、赋值......
  • PyQt/PySide's qwindows.dll qwindowsvistastyle.dll is corrupted by UPX
    Windows1064-bitsPython3.8.1064-bitsPySide25.15.2PyInstaller4.3UPX4.1.0itraises:"ThisapplicationfailedtostartbecausenoQtplatformplugincouldbeinitialize"Solutioninspecfiles,addupx_exclude=['qwindows.dll'......
  • C#使用 SAPscript的方法
    主要參照文檔https://wenku.baidu.com/view/a28b71adcf22bcd126fff705cc17552707225ed2.html?_wkts_=1693296465595&bdQuery=AxSAPFEWSELib.AxGuiApplication.GetScriptingEngine里面讲得比较清楚,但是最大的问题是代码不能Copy1)首先必须安装SAPGUI,当然SAP服务器,账号,密码这些......
  • PTAM-论文阅读
    论文全称:ParallelTrackingandMappingforSmallARWorkspacesPTAM的重要意义是以下两点:PTAM提出并实现了跟踪与建图过程的并行化。跟踪部分需要实时响应图像数据,而对于地图的优化则没必要实时计算。后端优化可以在后端慢慢进行,在必要时进行线程同步即可。这是视觉slam中首次区......
  • ArcGIS for javascript 加载天地图瓦片
    ArcGISforjavascript(4.27)加载天地图瓦片importMapfrom"@arcgis/core/Map";importMapViewfrom'@arcgis/core/views/MapView';importWebTileLayerfrom'@arcgis/core/layers/WebTileLayer';constvecLayer=newWebTileLayer('ht......
  • ArrayList源码阅读之EMPTY_ELEMENTDATA和DEFAULTCAPACITY_EMPTY_ELEMENTDATA区别
    /***Sharedemptyarrayinstanceusedforemptyinstances.*/privatestaticfinalObject[]EMPTY_ELEMENTDATA={};/***Sharedemptyarrayinstanceusedfordefaultsizedemptyinstances.We*distinguishthisfromEMPTY_ELEMENTDATAtoknowhowmuchtoi......
  • [React Typescript] Fixing forwardRef's Type
    FixforwardRefgloballyTojumpaheadtothesolution,uncommentingthefollowingcodefromStefanBaumgartnerwillgloballyoverridethevalueof forwardRef:declaremodule"react"{ functionforwardRef<T,P={}>( render:(props:P,r......