暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【percona-tookit工具使用注意事项】

原创 张sir 2022-10-19
578

前言

      在我多年的mysql的运维实践中,经常会碰到添加字段,索引或者主从不一致的问题,这应该是让dba十分头疼的一件事。percona-tookit提供了一些列mysql的运维工具,本次主要实践下pt-online-schema-change(在线表结构变更)、pt-table-checksum(数据校验)、pt-table-sync(数据同步)三个工具,并在实践中总结了使用的注意事项。实验环境数据库版本5.7,pt版本3.1。

测试pt-online-schema-change

     一、安装 

             软件解压直接用,不多说了。在使用的过程中,如果有依赖包的报错,缺什么装什么,比如:

           

           直接yum安装就行:

           

     二、无读写添加字段

           创建一张2kw记录的表,测试在无读写状态下,通过pt-online-schema-change和alter添加字段的情况。

           

           alter直接添加字段,10.73s

          

          利用pt工具添加字段,时间在70s左右,相比于alter直接添加没有任何优势。

           

          三、低频读写添加字段

           用下面的脚本模拟对表big_table的低频读写。

           

          alter直接添加字段,时间12.89s,时间跟无读写的时间差不多。

            

           利用pt工具添加字段,时间80s,比无读写时间长10s。

       

       四、高频读写添加字段

           利用mysqlslap持续对big_table进行增删查改。

        

           alter直接新增字段,时间47s,

        

         利用pt工具添加字段,时间5分多。

          

        综上,在mysql5.7已经实现了online ddl的情况下,使用pt工具在线添加字段性能远远不如mysql自己的实现方式。

测试pt-table-checksum和pt-table-sync

        这两个工具一般都是同时使用,在主从有数据不一致的情况下,可以先校验数据,再利用sync工具进行数据的同步。

       一、制造主从不一致的场景。

              主库:
              

             备库:

             

             由于以上两个工具,依赖于主从复制的状态正常,如果sql线程或者io线程中断,工具是无法生效的,我这里在备库设置了slave-skip-errors=all,让备库跳过所有报错,保证sql thread和io thread可以正常运行。

        二、进行数据校验

              连接主库运行,可以看出test表有

             

         三、执行修复

              连接备库执行修复,
              

              确认备库数据,这个时候可以看到主备库数据已经追平了。

                

总结

        1、根据以上测试,pt-online-schema-change工具在mysql5.7以后基本上没有什么作用了,mysql自带的online ddl功能就比他好用。

        2、pt-table-checksum/pt-table-sync需要备库的sql thread和io thread是正常的,如果备库因为数据不一致导致相关线程停止,可以使用slave-skip-errors暂时跳过所有报错,再用工具把数据追平。

        3、pt-table-checksum会对检查的表执行for update进行锁表,这个在线上操作的时候一定要注意,在业务低峰实施。可以通过指定--chunk-time限制每次校验chunk的时间,间接调整了每次锁定的范围。

        4、pt-table-checksum/pt-table-sync最好需要表具有主键或者唯一键,如果没有的话,可能就会报错。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论