MySQL 必备工具使用的6个锦囊妙计!

作者:老张

原文:http://blog.51cto.com/sumongodb/1955184

今儿给大家分享一篇,关于MySQL DBA必备工具的使用。可以方便帮助我们管理我们的数据库,让我们的工作更高效。

这款工具是 MySQL 一个重要分支 percona 的,名称叫做 percona-toolkit(一把锋利的瑞士军刀),它呢是一组命令的集合。今儿给大家介绍几个我们在生产环境中最长用到的。

工具包的下载地址:https://www.percona.com/downloads/percona-toolkit/LATEST/

之前有伙伴在后台问我关于机器学习、算法的公众号,这不,注意啦!推荐一个公众号给大家:机器学习算法与自然语言处理(我关注很久的公众号)

一个哈工大nlp在读博士的技术提升之路,为您提供一系列我在学习路上的笔记,经验以及感悟。自然语言处理领域排名第一,机器学习算法领域排名第一,与君成长!

安装过程很简单,先解压:

tar -zxvf percona-toolkit-3.0.3_x86_64.tar.gz

由于是二进制的包,解压完可以直接进到percona-toolkit-3.0.3/bin目录下使用。

锦囊妙计一:

pt-online-schema-change

功能可以在线整理表结构,收集碎片,给大表添加字段和索引。避免出现锁表导致阻塞读写的操作。针对 MySQL 5.7 版本,就可以不需要使用这个命令,直接在线 online DDL 就可以了。

展现过程如下:

由于是测试环境,就不创建一张数据量特大的表,主要让大家理解这个过程。

这是表里面数据的情况和表结构

在线增加字段的过程:

查看结果新增了一个 city_id 的字段:

锦囊妙计二:

pt-query-digest

功能:现在捕获线上TOP 10 慢 sql 语句。

大家都知道数据库大多数的性能问题是 sql 语句造成的,所以我们要抓住它们这些犯罪分子。及时做相关的优化处理。

展现过程如下:

可以根据时间间隔,来采样慢 sql 语句。since 是可以调整的 sql 语句

查看 sql 报告,总结慢语句有哪些,并可以看针对时间的消耗。

如下只是部分报告过程

可以看到报告中,列举出了一些sql语句响应时间占比情况,和sql语句的执行时间情况。方便我们可以很直观的观察哪些语句有问题。(这里只列举了一条sql)

锦囊妙计三:

pt-heartbeat

功能监控主从延迟。监控从库落后主库大概多少时间。

环境介绍:192.168.56.132主库,192.168.56.133从库

操作如下:

在主库上执行:

test为我监控同步的库,在该库下创建一张监控表heartbeat,后台进程会时时更新这张表。

在从库上执行监控主从同步延迟时间的语句:

master-server-id是主库的server-id, -h(主库ip)

时间是0s,目前没有延迟的出现。

锦囊妙计四:

pt-table-checksum

功能检查主从复制一致性

原理:在主上执行检查语句去检查 mysql主从复制的一致性,生成 replace 语句,然后通过复制传递到从库,再通过update 更新 master_src 的值。最后通过检测从上 this_src 和 master_src 的

值从而判断复制是否一致。

比较test库的差异情况,在主库上面执行:

可见diff都为0,证明主从的test库没有差异情况。

比较test库哪些表有差异(需要添加replicate-check-only),在主库上面执行:

可见test库下面t这张表主从数据不一致。

锦囊妙计五:

pt-slave-restart

功能:监控主从错误,并尝试重启MySQL主从

注意事项:跳过错误这个命令,解决从库多数据的现象(错误代码1062)。如果从库少数据,还跳过错误,就不能从根儿上解决主从同步的问题了(错误代码1032),就需要先找到缺少的数据是什么了,如果缺少的特别多,建议重新搭建主从环境。

从库出现1062的错误:

需要在从库上面执行:

跳过错误之后,检查主从结果:

同步状态又恢复一致了。

锦囊妙计六:

pt-ioprofile

功能:方便定位IO问题,可通过IO吞吐量来定位。

read:从文件中读出数据。要读取的文件用文件描述符标识,数据读入一个事先定义好的缓冲区。

write:把缓冲区的数据写入文件中。

pread:由于lseek和read调用之间,内核可能会临时挂起进程,所以对同步问题造成了问题,调用pread相当于顺序调用了lseek和read,这两个操作相当于一个捆绑的原子操作。

pwrite:由于lseek和write调用之间,内核可能会临时挂起进程,所以对同步问题造成了问题,

调用pwrite相当于顺序调用了lseek 和write,这两个操作相当于一个捆绑的原子操作。

fsync:确保文件所有已修改的内容已经正确同步到硬盘上,该调用会阻塞等待直到设备报告IO完成。

filename:与磁盘交互的文件名称

通过这个报告我们可以看到,哪个文件占用IO的时间比较多,跟磁盘交互最为繁忙,便于锁定IO问题。

因为这个工具集命令很多,今儿先给大家介绍这些比较常用的,其他的一些大家感兴趣可以私下去研究下。

官方地址:https://www.percona.com/doc/percona-toolkit/LATEST/index.html

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180605A09BFX00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券