iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >pt-table-sync修复主从不一致
  • 953
分享到

pt-table-sync修复主从不一致

2024-04-02 19:04:59 953人浏览 泡泡鱼
摘要

pt-table-sync修复主从不一致pt-table-sync简介顾名思义,它用来修复多个实例之间数据的不一致。它可以让主从的数据修复到最终一致,也可以使通过应用双写或多写的多个不相关的数据库实例修复到

pt-table-sync修复主从不一致

pt-table-sync简介

顾名思义,它用来修复多个实例之间数据的不一致。它可以让主从的数据修复到最终一致,也可以使通过应用双写或多写的多个不相关的数据库实例修复到一致。同时它还内部集成了pt-table-checksum的校验功能,可以一边校验一边修复,也可以基于pt-table-checksum的计算结果来进行修复。

工作原理

1. 单行数据checksum值的计算

计算逻辑与pt-table-checksum一样,也是先检查表结构,并获取每一列的数据类型,把所有数据类型都转化为字符串,然后用concat_ws()函数进行连接,由此计算出该行的checksum值。checksum默认采用crc32计算。

2. 数据块checksum值的计算

同pt-table-checksum工具一样,pt-table-sync会智能分析表上的索引,然后把表的数据split成若干个chunk,计算的时候以chunk为单位。可以理解为把chunk内所有行的数据拼接起来,再计算crc32的值,即得到该chunk的checksum值。

3. 坏块检测和修复

前面两步,pt-table-sync与pt-table-checksum的算法和原理一样。再往下,就开始有所不同:

pt-table-checksum只是校验,所以它把checksum结果存储到统计表,然后把执行过的sql语句记录到binlog中,任务就算完成。语句级的复制把计算逻辑传递到从库,并在从库执行相同的计算。pt-table-checksum的算法本身并不在意从库的延迟,延迟多少都一样计算(有同事对此不理解,可以参考我的前一篇文章),不会影响计算结果的正确性(但是我们还是会检测延迟,因为延迟太多会影响业务,所以总是要加上—max-lag来限流)。 

pt-table-sync则不同。它首先要完成chunk的checksum值的计算,一旦发现主从上同样的chunk的checksum值不同,就深入到该chunk内部,逐行比较并修复有问题的行。其计算逻辑描述如下(以修复主从结构的数据不一致为例,业务双写的情况修复起来更复杂—因为涉及到冲突解决和基准选择的问题,限于篇幅,这里不介绍):

1. 对每一个从库,每一个表,循环进行如下校验和修复过程。

2. 对每一个chunk,在校验时加上for update。一旦获得锁,就记录下当前主库的show master status值。

3. 在从库上执行select master_pos_wait()函数,等待从库sql线程执行到show master status得到的位置。以此保证,主从上关于这个chunk的内容均不再改变。

4. 对这个chunk执行checksum,然后与主库的checksum进行比较。

5. 如果checksum相同,说明主从数据一致,就继续下一个chunk。

6. 如果checksum不同,说明该chunk有不一致。深入chunk内部,逐行计算checksum并比较(单行的checksum的比较过程与chunk的比较过程一样,单行实际是chunk的size为1的特例)。

7. 如果发现某行不一致,则标记下来。继续检测剩余行,直到这个chunk结束。

8. 对找到的主从不一致的行,采用replace into语句,在主库执行一遍以生成该行全量的binlog,并同步到从库,这会以主库数据为基准来修复从库;对于主库有的行而从库没有的行,采用replace在主库上插入(必须不能是insert);对于从库有而主库没有的行,通过在主库执行delete来删除(pt-table-sync强烈建议所有的数据修复都只在主库进行,而不建议直接修改从库数据;但是也有特例,后面会讲到)。

9. 直到修复该chunk所有不一致的行。继续检查和修复下一个chunk。

10. 直到这个从库上所有的表修复结束。开始修复下一个从库。

重要选项

安全选项

—[no]check-triggers 检查是否有触发器,有则警告 

—[no]foreign-key-checks 默认检查主外键约束,有则警告 

—[no]unique-checks 检查是否有唯一索引,无则警告

过滤选项

—ignore-databases 

—ignore-engines 

—ignore-tables

其他选项

—replicate=s 与pt-table-checksum结合起来,只修复,而不校验。使用pt-table-checksum之前校验的结果 

—bidirectional 双向同步。通常都以主库的数据为准,如果开启双向同步,就要定义冲突解决规则,会比较复杂

 

pt-table-checksum命令

cd /data/work/percona-toolkit-2.1.1/bin

./pt-table-sync --print h='192.168.0.90',u='superdba',p='*****',P=3650,D='expert',t='doctor' --sync-to-master h=192.168.0.5,P=3650   

由于对表需要权限过大 故用superdba

前面是slave ip,port,user,passWord

后面是master ip,port,user,password

D–database

t-table

--print :打印,但不执行命令。

--execute :执行命令。

pt-table-sync修复主从不一致

pt-table-sync修复主从不一致

此时表明已经修复完成。可以重新再检测一遍,确认是否修复;

replace 表必须有主键或者唯一索引,并且此表不能存在触发器, 否则此方案不适用


您可能感兴趣的文档:

--结束END--

本文标题: pt-table-sync修复主从不一致

本文链接: https://www.lsjlt.com/news/38916.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 验证MySQL主从一致性(pt-table-checksum&pt-table-sync)
    percona-toolkit-2.2.8-1.noarch.rpm有两个工具可以验证MySQL主从数据的一致性 安装tookkit需要一些依赖包 yum install perl pe...
    99+
    2024-04-02
  • MySQL主从不一致的修复过程是怎样的
    本篇文章给大家分享的是有关MySQL主从不一致的修复过程是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 昨天发现一个5.7的MySQ...
    99+
    2024-04-02
  • 如何使用pt工具校验修复主从
    这篇文章主要为大家展示了“如何使用pt工具校验修复主从”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用pt工具校验修复主从”这篇文章吧。使用pt工具校验主...
    99+
    2024-04-02
  • MySQL主从复制不一致的情况有哪些
    这篇文章给大家分享的是有关MySQL主从复制不一致的情况有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 1.网络的延迟由于mysql主从复制是...
    99+
    2024-04-02
  • MySQL中GTID主备不一致怎么修复
    这篇文章主要介绍了MySQL中GTID主备不一致怎么修复,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。方案一:重建 ReplicasMySQL 5.6及以上版在复制中引入了新...
    99+
    2023-06-14
  • reset master导致主从GTID不一致怎么办
    这篇文章将为大家详细讲解有关reset master导致主从GTID不一致怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 1、 主库报...
    99+
    2024-04-02
  • MySQL主从复制数据不一致的解决方法
    目录1. 准备工作1.1 主机配置1.2 从机配置2. 数据不一致问题3. 原因分析4. 问题解决5. 小结今天来说说 MySQL 主从复制数据不一致的问题,通过几个具体的案例,来向...
    99+
    2024-04-02
  • MySQL主从不一致的问题分析
    这篇文章主要讲解了“MySQL主从不一致的问题分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL主从不一致的问题分析”吧!  &nbs...
    99+
    2024-04-02
  • MySQL中主从不一致如何解决
    MySQL中主从不一致如何解决,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、MySQL主从不同步情况1.1 网络的延迟由于mysql主从复...
    99+
    2024-04-02
  • redis主从数据不一致怎么解决
    要解决Redis主从数据不一致的问题,可以采取以下措施:1. 检查网络连接:确保主从服务器之间的网络连接稳定,并且没有丢包或延迟过高...
    99+
    2023-08-20
    redis
  • MySQL主从数据不一致怎么解决
    MySQL主从数据不一致的解决方法可以分为以下几个步骤: 检查主从同步状态:可以通过查看主从服务器的状态信息来确认同步是否正常。...
    99+
    2023-10-27
    MySQL
  • Mysql table id问题导致主从复制失败该怎么办
    这篇文章将为大家详细讲解有关Mysql table id问题导致主从复制失败该怎么办,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 0、导读 主从复制...
    99+
    2024-04-02
  • MySQL主从数据库不一致如何解决
    MySQL主从数据库不一致如何解决,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。先上Master库:mysql>show...
    99+
    2024-04-02
  • redis主从数据不一致问题如何解决
    使用Redis的复制(Replication)功能来保证数据一致性。可以将主节点写入的数据同步到从节点,确保从节点的数据与主节点...
    99+
    2024-04-09
    redis
  • mysql出现主从同步不一致的情况分析
    本篇内容主要讲解“mysql出现主从同步不一致的情况分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql出现主从同步不一致的情况分析”吧! 1. My...
    99+
    2024-04-02
  • 修复: LSA 数据库包含内部不一致
    在使用驱动器映射和网络共享时,可能会出错很多问题。无线网络不如有线网络可靠。一直困扰用户的错误是本地安全机构数据库包含内部不一致。这会影响所有网络驱动器,用户无法访问或连接到它。该错误还会导致通过 Samba 到 Linux 和其他工作站的...
    99+
    2023-08-04
  • mysql主从数据不一致提示:Slave_SQL_Running: No 的解决方法
    小编给大家分享一下mysql主从数据不一致提示:Slave_SQL_Running: No 的解决方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我...
    99+
    2024-04-02
  • MySQL自增列主从不一致的测试(r12笔记第37天)
        MySQL里面有一个问题尤其值得注意,那就是自增列的重复值问题,之前也简单分析过一篇,但是在后续我想了下,还有很多地方需要解释,一个就是从库的自增列是如何维护的,是...
    99+
    2024-04-02
  • 修复 go: C:\Go\src 中的供应商不一致
    小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《修复 go: C:\Go\src 中的供应商不一致》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分...
    99+
    2024-04-05
  • MySQL MGR如何修复数据不一致的节点
    这篇文章主要介绍了MySQL MGR如何修复数据不一致的节点,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.在当前主节点创建全量备份(my...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作