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

相关推荐

  • 分析Redis中的字典、哈希算法和ReHash原理

    技术分析Redis中的字典、哈希算法和ReHash原理本篇内容介绍了“分析Redis中的字典、哈希算法和ReHash原理”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处

    攻略 2021年11月5日
  • "docker build" requires exactly 1 argument(s).报错的解决方法

    技术"docker build" requires exactly 1 argument(s).报错的解决方法"docker build" requires exactly 1 argument(s).报错的解决方法,很

    攻略 2021年11月12日
  • 80创业,80年代后应该如何创业

    技术80创业,80年代后应该如何创业如今的80后有着自己独特的创业方式80创业,但无论何种方式都不能脱离脚踏实地。创业对于80后来说是一次人生的转折,是一次新的选择,所以要谨慎,更要去坚持。
    第一条,确定方向
    方向不是目

    生活 2021年10月27日
  • 为什么数据库会丢失数据

    技术为什么数据库会丢失数据今天就跟大家聊聊有关为什么数据库会丢失数据,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。数据库管理系统在今天已经是软件的重要组成部分,开

    攻略 2021年12月2日
  • ASP.NET的J#和C++举例分析

    技术ASP.NET的J#和C++举例分析这篇文章主要介绍“ASP.NET的J#和C++举例分析”,在日常操作中,相信很多人在ASP.NET的J#和C++举例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法

    攻略 2021年11月29日
  • 塑料三角烧瓶,三角烧瓶和三角瓶的区别

    技术塑料三角烧瓶,三角烧瓶和三角瓶的区别一塑料三角烧瓶、应用领域区别:1、三角瓶多用于生物培育菌种实验,有盖。2、三角烧瓶即锥形瓶是化学实验中常见仪器,多无盖,可加热,用于化学实验。
    二、外形区别:
    3、锥形瓶一般来说

    生活 2021年10月26日