Percona Toolkit简称pt工具—PT-Tools,是Percona公司开发用于管理MySQL的工具,功能包括检查主从复制的数据一致性、检查重复索引、定位IO占用高的表文件、在线DDL等。
可以在percona官网上下载 https://www.percona.com/downloads/percona-toolkit/LATEST/
📎percona-toolkit-3.2.0-1.el7.x86_64.rpm.zip
一、系统相关命令
- pt-summary 查看数据库服务器磁盘、CPU、内存等情况
- pt-mysql-summary --user=root --password=*** 查看mysql数据库参数配置情况、是否有表锁等
二、数据库相关命令
1. pt-query-digest 分析慢查询日志
查看慢查询日志/mysql-flash/data/mgr2-slow.log 中24小时内的慢查询分析:
pt-query-digest --since=24h mgr2-slow.log > slow_report_1.log
慢查询日志中某个时间段的慢查询分析:
pt-query-digest mgr2-slow.log --since '2020-08-03 09:30:00' --until '2020-08-03 23:00:00' >slow_report_2.log
对binlog日志的分析:
mysqlbinlog mgr-binlog.000006 > mgr-binlog.sql
pt-query-digest --type=binlog --since '2020-08-03 09:30:00' --until '2020-08-03 23:30:00' > slow_report_3.log
2. pt-kill Kill掉符合条件的sql
杀掉select超过40s的所有select的sql:
pt-kill --host=172.16.80.58 --port=3306 --user=root --password=123 --match-info "select|SELECT" --busy-time 40 --victims all --daemonize --kill --log=pt_select_kill.log
此时pt-kill会在后台运行,一旦有超过40s的select的sql就会自动kill
被kill的会话如下:
三、表管理相关命令
1. pt-archiver 归档并删除表中数据,
由于批量delete from会导致mysql出现hang的现象,可以通过limit行数,多次进行删除操作,从而减轻mysql负载
pt-archiver就是一种减小mysql负载的清理表并归档表的命令,通过limit、bulk-delete等参数,批量但是有限制 的删除表数据。
归档的方式有两种:归档到操作系统文件;归档到其他表
(1)把源数据库test中的t5表中id<10000的数据归档到本地/mysql-flash/archive/下,并删除源表中的相应数据(每次删除1000条数据)
pt-archiver --source h=172.16.80.58,u=root,p=123,D=test,t=t5,A=utf8mb4 --file='/mysql-flash/archive/t5_arc_%Y-%m-%d.sql' --where "id<10000" --bulk-delete --limit=1000
(2)把源数据库test中的t5表中id<20000的数据归档到t5_arch中,并删除源表中的相应数据(每次删除1000条数据)需要保证t5_arch表存在
CREATE TABLE `t5_arch` (
`id` int(11) NOT NULL,
`c2` text COLLATE utf8mb4_bin,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
;
pt-archiver --source h=172.16.80.58,u=root,p=123,D=test,t=t5,A=utf8mb4 --dest h=172.16.80.58,u=root,p=123,D=test,t=t5_arch,A=utf8mb4 --where "id<20000" --progress 1000 --bulk-delete --limit=1000
2. pt-online-schema-change在线DDL
Mysql对于DDL,如增删字段、添加索引等操作很不友好,严重时会导致mysql服务崩溃,可以使用pt-online-schema-change来在线DDL,避免DDL风险
pt-online-schema-change原理是在旧表的基础上根据DDL需求建新表,然后修改新表结构,插入数据到新表,最后旧表rename成old,新表rename成旧表
(1)重建表(指定原存储引擎,创建结构完全相同的表), 消除表碎片
pt-online-schema-change --alter "ENGINE=InnoDB" h=172.16.80.58,P=3306,u=root,p=123,D=sigcontrol_500101,t=adm_tfc_opt_inter_imbalance_d,,A=utf8mb4 --charset=utf8mb4 --execute
(2)添加索引
pt-online-schema-change --alter "ADD INDEX idx_write_time(write_time) USING BTREE" h=localhost,P=3306,u=root,p=123,D=sigcontrol_500101,t=dws_tfc_epd,A=utf8mb4 --charset=utf8mb4 --execute
(3)添加字段
pt-online-schema-change --alter="ADD COLUMN city_id INT" h=localhost,P=3306,u=root,p=123,D=sigcontrol_500101,t=dws_tfc_epd,A=utf8mb4 --charset=utf8mb4 --execute