MySQL常用工具之percona-toolkit

本文介绍了Percona Toolkit的安装步骤及多种实用工具的具体使用方法,包括MySQL服务器状态监测、磁盘统计、慢查询日志分析等,适用于数据库管理员进行MySQL的日常管理和维护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简介
Percona Toolkit 是一组高级的命令行工具集,用来管理 MySQL 和系统任务,主要包括:
1、主从状态检测及修复
2、检测从库复制的延迟
3、慢查询、日志分析
4、检测MySQL 服务器状态
5、从日志和 tcpdump 中检测


二、安装工具
1、安装perl相关模块

yum install perl-DBI  
  
yum install perl-DBD-MySQL  
  
yum install perl-Time-HiRes  
  
yum install perl-IO-Socket-SSL  

2、下载和安装per依赖包、percona toolkit的包

wget http://pkgs.repoforge.org/perl-TermReadKey/perl-TermReadKey-2.30-1.el3.rf.x86_64.rpm  
rpm -ivh perl-TermReadKey-2.30-1.el3.rf.x86_64.rpm
    wget https://www.percona.com/downloads/percona-toolkit/2.2.14/RPM/percona-toolkit-2.2.14-1.noarch.rpm  
    rpm -ivh percona-toolkit-2.2.14-1.noarch.rpm  

三、使用
1,服务器摘要
pt-summary  

2、服务器磁盘监测
pt-diskstats 

3、mysql服务状态摘要
pt-mysql-summary -- --user=root --password=root 

4、慢查询日志分析统计
pt-query-digest /data/logs/mysql/mysql-slow.log  

5、表同步工具,和mk-tables-sync功能一样, 用法上 稍有不一样 ,–print的结果更详细
pt-table-sync --execute --print --no-check-slave --database=world  h='127.0.0.1' --user=root --password=123456 h='192.168.0.212' --user=root --password=123456

6、主从状态监测,提供给它一台mysql服务器的IP用户名密码,就可以分析出整个主从架构中每台服务器的信息,包括但不限于mysql版本,IP地址,server ID,mysql服务的启动时间,角色(主/从),Slave Status(落后于主服务器多少秒,有没有错误,slave有没有在运行)。
[root@RHCE6 ~]# pt-slave-find --host=localhost --user=rhce6 --password=rhce6   
localhost   
Version         5.5.23-log   
Server ID       1   
Uptime          05:16:10 (started 2012-08-08T09:32:03)   
Replication     Is not a slave, has 1 slaves connected, is not read_only   
Filters            
Binary logging  STATEMENT   
Slave status       
Slave mode      STRICT   
Auto-increment  increment 1, offset 1   
InnoDB version  1.1.8   
+- 192.168.0.168   
   Version         5.5.23-log   
   Server ID       10   
   Uptime          38:19 (started 2012-08-08T14:09:54)   
   Replication     Is a slave, has 0 slaves connected, is not read_only   
   Filters            
   Binary logging  STATEMENT   
   Slave status    0 seconds behind, running, no errors   
   Slave mode      STRICT   
   Auto-increment  increment 1, offset 1   
   InnoDB version  1.1.8  

7、mysql死锁监测
pt-deadlock-logger h='127.0.0.1' --user=root --password=123456  

8.主键冲突检查
pt-duplicate-key-checker --database=world h='127.0.0.1' --user=root --password=123456

9.监测从库的复制延迟   ###经过测试 运行这个命令会使从库上的sql线程异常挂掉
pt-slave-delay --host 192.168.0.206 --user=root --password=123456  



### Percona Toolkit 实现 MySQL 无锁变更的最佳实践 Percona Toolkit 是一套用于管理和优化 MySQL 和 MariaDB 的实用工具集合。其中 `pt-online-schema-change` 工具可以实现在线表结构修改而无需锁定整个表,从而减少对生产环境的影响。 #### 工作原理 `pt-online-schema-change` 创建一个与原表相同的新表,并通过触发器捕获原始表上的所有更改操作(INSERT、UPDATE、DELETE),将其同步到新表上。当数据完全一致时,它会将旧表替换为新表[^2]。 #### 配置与使用方法 以下是基于最佳实践的配置和使用指南: 1. **安装 Percona Toolkit** 如果尚未安装该工具集,则可以通过包管理器或源码编译的方式完成安装。 ```bash sudo apt-get install percona-toolkit # Debian/Ubuntu sudo yum install percona-toolkit # CentOS/RHEL ``` 2. **准备测试环境** 假设有一个名为 `online_table` 的表需要添加主键并设置自增字段。此场景已在引用中验证成功[^3]。 3. **运行命令** 下面是一个典型的调用示例: ```bash pt-online-schema-change \ --alter "ADD PRIMARY KEY (id), MODIFY id INT NOT NULL AUTO_INCREMENT" \ D=test,t=online_table \ --execute ``` 参数解释如下: - `--alter`: 定义要执行的 ALTER TABLE SQL 语句。 - `D=test`: 指定数据库名称。 - `t=online_table`: 指定目标表名。 - `--execute`: 执行实际的操作而非仅做模拟运行。 4. **监控进度** 可以通过查看进程列表或者日志来跟踪任务状态。如果遇到性能瓶颈,可能需要调整一些参数比如并发线程数 (`--chunk-size`) 或者暂停时间 (`--sleep`) 来缓解压力。 5. **注意事项** - 确认有足够的磁盘空间存储临时副本及其索引。 - 测试期间应关闭其他写入密集型作业以免干扰迁移过程。 - 对于非常大的表格建议分批处理以降低内存消耗风险。 6. **高级选项** 根据具体需求还可以启用更多功能,例如只读模式检测(`--check-alter`)、重试机制设定(`--max-lag`)等[^5]。 7. **自动化脚本集成** 结合配置文件简化重复性工作流。例如参照提供的模板定制专属方案[^4]: ```bash source /path/to/mysql_partition.conf pt-online-schema-change \ --alter "$(cat alter.sql)" \ h=${DB_HOST},P=${DB_PORT},u=${DB_USER},p=${DB_PASS} \ D=${DB_NAME},t=${TABLE_NAME} \ --critical-load Threads_running=50 \ --daemonize --nochild-tables --statistics ``` #### 示例代码片段展示分区逻辑定义部分 ```sql ALTER TABLE your_table PARTITION BY RANGE COLUMNS(create_time)( PARTITION p_old VALUES LESS THAN ('2023-01-01'), PARTITION p_recent VALUES LESS THAN MAXVALUE ); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值