当前位置: 首页 > article >正文

09、PT工具用法

目录

1、PT工具原理

2、在线修改表结构

3、使用pt-query-diges分析慢查询

4、使用pt-kill来kill掉一些垃圾SQL

5、pt-table-checksum进行主从一致性排查和修复

6、pt-archiver进行数据归档

7、其他一些pt工具


1、PT工具原理

创建一张与原始表结构相同的临时表 然后对临时表进行表结构变更 通过触发器实现增量数据处理 将原始表中的数据复制到新表中 把原始表重命名为 _x_old,将临时表重命名为x 删除 _xxx_old表,删除3个触发器 表结构变更完成。

使用注意事项:表必须有主键或唯一索引、保证足够空间、原表上不能有触发器。

2、在线修改表结构

示例:

pt工具安装
wget https://downloads.percona.com/downloads/percona-toolkit/3.5.4/binary/redhat/7/x86_64/percona-toolkit-3.5.4-2.el7.x86_64.rpm
yum install percona-toolkit-3.5.4-2.el7.x86_64.rpm
​
创建测试用户测试表
CREATE USER 'pt_osc'@'localhost' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'iUdy87G_caq';
GRANT create,drop,alter,insert,delete,select,update,process,replication slave,trigger ON *.* TO 'pt_osc'@'localhost';
​
use martin
CREATE TABLE users_info (
id INT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(50)
);
INSERT INTO users_info (id, name, email) VALUES (1, 'John', 'john@example.com');
INSERT INTO users_info (id, name, email) VALUES (2, 'Jane', 'jane@example.com');
​
可以打开generallog方便观察分析
set global general_log=on
tail -f /data/mysql/log/mysql-general.log

用pt-osc增加字段

增加字段
pt-online-schema-change -u pt_osc -p 'iUdy87G_caq' -S /tmp/mysql.sock  --alter "ADD COLUMN age INT" -- D=martin,t=users_info
​
删除列
pt-online-schema-change -u pt_osc -p 'iUdy87G_caq' -S /tmp/mysql.sock  --alter "DROP COLUMN age" --execute D=martin,t=users_info
​
修改列类型
pt-online-schema-change -u pt_osc -p 'iUdy87G_caq' -S /tmp/mysql.sock  --alter "MODIFY COLUMN email varchar(100)" --execute D=martin,t=users_info
​
修改列名
pt-online-schema-change -u pt_osc -p 'iUdy87G_caq' -S /tmp/mysql.sock  --alter "CHANGE COLUMN name user_name varchar(50)" --execute --no-check-alter D=martin,t=users_info
​
添加索引
pt-online-schema-change -u pt_osc -p 'iUdy87G_caq' -S /tmp/mysql.sock  --alter "ADD INDEX index_user_name (user_name)" --execute D=martin,t=users_info
​
删除索引
pt-online-schema-change -u pt_osc -p 'iUdy87G_caq' -S /tmp/mysql.sock  --alter "DROP INDEX index_user_name" --execute D=martin,t=users_info
​
构造重复数据
INSERT INTO users_info (id, user_name, email) VALUES (3, 'John', 'john1@example.com');
​
使用pt-osc添加唯一索引
pt-online-schema-change -u pt_osc -p 'iUdy87G_caq' -S /tmp/mysql.sock  --alter "ADD unique key uniq_user_name (user_name)" --execute D=martin,t=users_info
    可以通过这个语句查看添加唯一索引的字段是否有重复值
    SELECT IF(COUNT(DISTINCT user_name) = COUNT(*),
       'Yes, the desired unique index currently contains only unique

http://www.kler.cn/a/512014.html

相关文章:

  • R数据分析:有调节的中介与有中介的调节的整体介绍
  • 左神算法基础提升--4
  • 智能学习平台系统设计与实现(代码+数据库+LW)
  • 编程工具箱(免费,离线可用)
  • XML在线格式化 - 加菲工具
  • 将Docker运行中的容器保存为镜像并导出导入
  • PHP基础(下)
  • 数学基础 --线性代数之理解矩阵乘法
  • 如何解析返回的快递费用数据?
  • Android开发与网络请求
  • 【sass+css变量实现换肤】
  • Maven项目中没有.iml文件
  • 编辑器Vim基本模式和指令 --【Linux基础开发工具】
  • 深入解析MIMIC IV数据库中 labevents 和 chatevents 数据表的区别与联系
  • .Net Core微服务入门全纪录(五)——Ocelot-API网关(下)
  • 定制setsockopt只设置一次实现指定sock的永久quickack
  • 如何在Nginx服务器上配置访问静态文件目录并提供文件下载功能
  • 实用技巧:快速修复电脑dxgidebug.dll缺失
  • 什么是报文的大端和小端,有没有什么记忆口诀?
  • WPF基础 | 初探 WPF:理解其核心架构与开发环境搭建
  • javaEE初阶(计算机是如何工作的(2) )
  • 用Zig开发Web后端独特好处
  • k8s 部署kafka单机和集群
  • 使用 Parcel 和 NPM 脚本进行打包
  • 【大数据】机器学习------聚类
  • 常见的图形库概览-03-D3.js 入门例子