38

从7乘24到朝九晚五,DBA效率提升必备工具汇总!

 4 years ago
source link: https://www.tuicool.com/articles/ZvURZzZ
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

在DBA的日常工作有很多事情,比如:在线更改数据表结构,校验主从数据,检查数据库状态,分析慢查询,如果人工去完成做起来真的很麻烦,很费时,足以让你达到996!

但是有一些数据库程序员,他们总是可以拿着996的薪水,干着955的活,是什么提高了DBA的“生产力”呢?

是科技推动了生产力!

今天小编就同大家分享一些在MySQL优化工作中实用的PT工具,帮你达到事半功倍!

Percona Toolkit简称 pt 工具,是Percona公司开发用于管理MySQL的工具,功能包括检查主从复制的数据一致性、检查重复索引、定位IO占用高的表文件、分析慢日志、在线DDL等。

3qQz2q6.jpg!web

PT安装

sudo yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm 
yum list | grep percona-toolkit 

安装好PT,接下来介绍一些实用的PT工具以及它们使用的使用吧~

1. pt-duplicate-key-checker

说明:此工具主要用来检查表的重复索引,并给出相关的建议。

pt-duplicate-key-checker -h 127.0.0.1 -u root -p 123456 -d xuanyuan -t rs_hc_status  
  • h:指定要检查的host
  • u:数据库的用户名
  • p:数据库的密码
  • d:要检查的数据库的名称
  • t:要检查的表

vAFnYnR.jpg!web

2. pt-kill

pt-kill 是一个简单而且很实用的查杀mysql线程和查询的工具,主要是为了防止一些大/复杂/长时间查询占用数据库及系统资源,而对线上业务造成影响的情况。

说明如下:

(1) 匹配processlist的查杀线程或者会话的重要参数 举几个匹配例子如下:

  • 按照命令command查杀线程
--match-command多个command之间用 | 分隔,否则会失效。  
按state 来杀掉线程 按info关键字来查杀线程测试通过按info来杀掉线程,注意info的内容一定要严格匹配大小写,否则会杀不掉。 按照访问来源host/ip查杀线程
--ignore-host/--match-host  
按照DB来查杀线程
--ignore-db/--match-db 
按照数据库用户
--ignore-user/--match-user 

(2) 行为参数 Action:

  • kill 杀掉连接并且退出
  • kill-query 只杀掉连接执行的语句,但是线程不会被终止
  • print 打印满足条件的语句

(3) 其它重要参数

nUzauai.jpg!web

(4) 常用使用如下:

每10秒检查一次,发现有sleeping的进程就给干掉

pt-kill --match-command Sleep --victims all --interval 10 --host=localhost --port=3306 --user=root --password=********* --kill --print -S 

更多使用参考下图:

EFJBRvI.jpg!web

3. pt-mysql-summary

查询mysql的概要信息。

pt-mysql-summary --host 127.0.0.1 --user root --password 123456 ; 

参数说明:

  • host:指定host 地址
  • user:指定连接数据库的用户名
  • password:指定连接数据库的密码

输出内容分析:

简要信息:主要包括mysql启动时间、版本、数据目录,连接数,主从信息。

  • processlist信息
  • mysql状态相关信息
  • Table cache
  • InnoDB信息
  • Variables参数变量信息
  • Configuration File

4. pt-query-digest

​ pt-query-digest主要用来分析mysql慢日志。

aqQRJzM.jpg!web

5. pt-table-checksum校验与pt-table-sync修复数据

  • pt-table-checksum与pt-table-sync,通常两个结合起来使用,前者主要用于数据的校验,验证主从是否一致;后者主要用来修复数据,两者一般情况结合起来用可以修复数据不一致的问题。
  • pt-table-checksum验证主从数据一致性的工具,当有捕获到不一致问题的时候,就会返回一个非0的结果。但是他只能查找数据的不一致。
  • pt-table-checksum在运行的时候是基于statement复制格式的,如果我们是ROW格式,需要在执行的时候加上--no-check-binlog-format参数。

(1) pt-table-checksum

我们缩小检查范围,单独检查某一个库,:

[root@localhost bin]# pt-table-checksum --nocheck-replication-filters --replicate=rep_test.checksums --no-check-binlog-format --databases=xuanyuan h=192.168.1.181,u=root,p=123456,P=3306 

参数说明:

yEraaeq.jpg!web

输出内容:

ja2YFbr.jpg!web

检查结果说明:

jE7NzyZ.jpg!web

(2) pt-table-sync

如果检测到有数据是不一致的发方,需要借助pt-table-sync进行修复。

e6bQZ3j.jpg!web

恢复不一致数据:

3amMzeB.jpg!web

修复完成后,主从数据将会达到一致状态。

(3) pt-table-sync的一些使用案例

iIFrIni.jpg!web

3ARbamY.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK