如何使用pt工具校验修复主从

技术如何使用pt工具校验修复主从这篇文章主要为大家展示了“如何使用pt工具校验修复主从”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用pt工具校验修复主从”这篇文章吧。

本文主要向您展示如何使用pt工具来验证和修复主从。内容简单易懂,条理清晰,希望能帮你解开疑惑。让边肖带领大家学习《如何使用pt工具验证修复主从》一文。

00-1010

使用pt工具校验主从一致性并修复

pt-table-校验和是Percona-Toolkit。

用于检测MySQL主从库的数据是否一致。原理是在主库中执行基于语句的sql语句,生成主库中数据块的校验和,将相同的sql语句转移到从库中执行,计算从库中相同数据块的校验和。最后,比较主从库中相同数据块的校验和值,判断主从数据是否一致。在检测过程中,根据唯一索引将表分成组块,以单位计算,可以避免锁定表。测试时会自动确定复制延迟,

Master的负载,超过阈值后,会自动暂停检测,减少对在线服务的影响。

默认情况下,Pt-table-checksum可以处理大多数情况。官方表示,即使有数千个库和数万亿行,它仍然可以很好地工作。这是因为设计简单,一次检查一个表不需要太多内存和冗余操作。必要时,pt-table-checksum将根据服务器负载动态改变块大小,从而减少来自库的延迟。

为了减少对数据库的干预,pt-table-checksum也会自动检测并连接到从库。当然,如果失败了,您可以指定-recurse-method选项来告诉从库在哪里。它的易用性还体现在这样一个事实上,如果复制有延迟,它将从库中复制。

校验和将被暂停,直到它赶上主库的计算时间点(也通过选项-设置最大容许延迟值,这被认为是不一致的)。

为了确保主数据库服务的安全性,该工具实施了许多保护措施:

1)自动将innodb_lock_wait_timeout设置为1s,以避免引起锁定。

2)默认情况下,当数据库中并发查询超过25个时,pt-table-checksum将被挂起。您可以设置- max-load选项来设置此阈值。

3)使用时。

在Ctrl停止任务后,该工具通常会完成当前的块检测,下次您开始使用- resume选项时,您可以恢复下一个。

矮胖的人或物

【工作过程】

1.

连接到主库:pt工具连接到主库,然后自动发现主库的所有从库。默认情况下,显示从属主机用于查找从属库,但这仅在主实例和从属实例的端口相同时有效。

2.

了解主库或从库是否有复制筛选规则:默认情况下,为安全起见,此选项处于选中状态。您可以关闭此检查,但这可能会导致校验和的sql语句不与从库同步,或者从库会发现从库中没有要检查的表,这将导致从库同步卡库。

3.开始获取表格,并逐一计算。

4.

如果它是表的第一个块,那么块大小一般是1000;如果它不是表的第一个块,则采用在12个步骤中分离的结果。

5.检查表结构,执行数据类型转换等。并生成校验和的sql语句。

6.根据表上的索引和数据分布,选择最适合的拆分表的方法。

7.启动校验和表。

8.默认情况下,在分块一个表之前,删除上次与该表相关的计算结果。除非-继续。

9.

根据解释的结果,判断组块的大小是否超过你定义的组块大小上限。如果超过,将忽略该区块,以免影响在线性能。

10.为要校验和的行添加更新锁,并计算。

11.将计算结果存储在master_crc master_count列中。

12.调整下一个块的大小。

13.

等待从库赶上主库。如果没有延迟备份的从库在运行,最好检查所有从库。如果发现延迟最大的从库的延迟超过最大延迟秒,pt工具将在此暂停。

14.如果发现主库的最大负载超过某个阈值,pt工具将在此暂停。

15.继续下一个块,直到表被分块。

16.等待校验和的执行

如果pt工具使用不当,会影响业务的正常使用,甚至死亡。

锁情况,下面结合生产经验,使用如下参数进行校验

  • TS :完成检查的时间戳。

  • ERRORS
        :检查时候发生错误和警告的数量。

  • DIFFS :不一致的chunk数量。当指定 --no-replicate-check 即检查完但不立即输出结果时,会一直为0;当指定 --replicate-check-only 即不检查只从checksums表中计算crc32,且只显示不一致的信息(毕竟输出的大部分应该是一致的,容易造成干扰)。

  • ROWS :比对的表行数。

  • CHUNKS :被划分到表中的块的数目。

  • SKIPPED
        :由于错误或警告或过大,则跳过块的数目。

  • TIME :执行的时间。

  • TABLE :被检查的表名

【修复脚本】

点击(此处)折叠或打开

  1. user=""

  2. password=""

  3. charset="utf8mb4"

  4. replicate="pt.checksum"

  5. chunk_size="1500"

  6. pid="/data/script/mysql/pt-table-sync.pid"

  7. sync_to_master="h=10.9.129.33,P=3306"

  8. tables="kuaikan.device_push_info"

  9. /usr/bin/pt-table-sync  \

  10. --user=${user} \

  11. --password=${password} \

  12. --pid=${pid}  \

  13. --bin-log \

  14. --tables="${tables}" \

  15. --buffer-in-mysql  \

  16. --no-buffer-to-client \

  17. --charset=${charset} \

  18. --no-check-child-tables \

  19. --no-foreign-key-checks  \

  20. --check-master \

  21. --replicate=${replicate} \

  22. --sync-to-master  ${sync_to_master} \

  23. --check-slave \

  24. --check-triggers \

  25. --chunk-size=${chunk_size} \

  26. --print \

  27. --transaction \

  28. --verbose

【修复脚本参数说明】

1)print只是打印需要执行的命令,确认无误后把参数—print改成—execute
2)sync_to_master此处填写从库的地址,只需要填写从库地址,会自动从从库show slave status获取主库的信息,不需要再写主库的地址,写了从库地址后,会根据从库差异对这个从库进行更改,无论如何都是在master端执行。并不会对其他从库的差异进行修复。
3)no-buffer-to-client如果禁用该选项的话,MySQL会一次性发送所有的rows,针对大表
4)lock参数如果 使用—replicate 或者 –sync-to-master 参数时,slave端 是不会锁表的。锁表的时候使用的是 lock tables ,但是如果使用 --transaction 的话,就是在事务开始到提交这一段,开始锁表

以上是“如何使用pt工具校验修复主从”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/65496.html

(0)

相关推荐

  • 世界各国人口,现今世界各国人口形势怎么样

    技术世界各国人口,现今世界各国人口形势怎么样谢谢邀请世界各国人口,人口是人类发展的根本,截止目前全球总人数约为77.17亿人(数据来自上海自然博物馆),全球人口的不断增多,既增强了人类的能力,又给地球带来了负担。对于一个

    生活 2021年10月22日
  • react中间事件怎么绑定(react事件绑定方法视频)

    技术怎么进行React事件绑定本篇文章给大家分享的是有关怎么进行React事件绑定,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。类组件事件绑定import

    攻略 2021年12月18日
  • 手机软件开发费用,开发一个App的费用是多少

    技术手机软件开发费用,开发一个App的费用是多少首先手机软件开发费用,一个App开发的基本要求,至少需要ios和android两个平台,来满足现在主要的手机平台使用用户,ios和android平台其中任意一个的开发价格大

    生活 2021年10月25日
  • mysql中pt-online-schema-change怎么用

    技术mysql中pt-online-schema-change怎么用这篇文章主要介绍了mysql中pt-online-schema-change怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后

    攻略 2021年11月2日
  • 盐酸和碳酸钠反应的化学方程式,碳酸氢钠和盐酸反应的化学方程式

    技术盐酸和碳酸钠反应的化学方程式,碳酸氢钠和盐酸反应的化学方程式碳酸氢钠和盐酸的反应化学方程式盐酸和碳酸钠反应的化学方程式:NaHCO3+HCl=NaCl+CO2↑+H2O碳酸氢钠和盐酸的反应离子方程式:
    HCO3- +

    生活 2021年10月29日
  • 纸牌游戏程序设计(用c语言做卡牌游戏教程)

    技术怎样用C语言实现纸牌游戏今天就跟大家聊聊有关怎样用C语言实现纸牌游戏,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. 基本要求一副没有花牌(J、Q、K、A、

    攻略 2021年12月18日