如何使用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)

相关推荐

  • 离职后公积金可以全部取出来吗,辞职后能全部提取公积金吗

    技术离职后公积金可以全部取出来吗,辞职后能全部提取公积金吗如果是外地户口员工离职后公积金可以全部取出来吗,在和单位解除劳动关系之后,员工是可以申请提取住房公积金的,而且是可以申请销户提取,是可以将住房公积金账户内所有余额

    生活 2021年10月31日
  • Scala尾递归的跟踪调用及局限方法是什么

    技术Scala尾递归的跟踪调用及局限方法是什么这篇文章主要讲解了“Scala尾递归的跟踪调用及局限方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Scala尾递归

    攻略 2021年12月9日
  • 鼠标指针怎么换,Cursosr怎么换鼠标指

    技术鼠标指针怎么换,Cursosr怎么换鼠标指打开控制面板,双击“鼠标”,选择“指针”选项卡鼠标指针怎么换。可以更改方案,或者选中下面的某一状态,点击“浏览”,选择一个鼠标图片即可。
    但所有的鼠标的图片格式都是.cur的

    生活 2021年10月30日
  • cucumber本质以及实例是怎么样的

    技术cucumber本质以及实例是怎么样的本篇文章为大家展示了cucumber本质以及实例是怎么样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。名词解释FeatureFeatu

    攻略 2021年10月19日
  • MQ底层类MQClientInstance和ProcessQueue分析

    技术MQ底层类MQClientInstance和ProcessQueue分析本篇内容介绍了“MQ底层类MQClientInstance和ProcessQueue分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样

    攻略 2021年11月12日
  • 关于伯努利数

    技术关于伯努利数 关于伯努利数问题引入. 给定 \(n\), \(k\),我们想计算
    \[S(n,k)= \sum_{i=0}^{n-1} i^k.
    \]进一步地,我们已经知道 \(S(n,k)\) 是

    礼包 2021年12月21日