文章目录
- 简介:
- 安装
- 工具说明
- 在线修改表结构pt-online-schema-change
简介:
Percona Toolkit是Percona公司支持DBA人员使用的高级命令行工具的集合,用于执行各种MySQL和系统任务,这些任务太难或难以手动执行。这些工具是私有或“一次性”脚本的理想替代品,因为它们是专业开发,正式测试和完整记录的。它们也是完全独立的,因此安装快速简便,无需安装库。
Percona Toolkit源自Maatkit和Aspersa,这两个最着名的MySQL服务器管理工具包。它由Percona开发和支持。有关Percona开发的更多信息和其他免费开源软件,请访问http://www.percona.com/software/。
安装
- LINUX
yum install -y percona-toolkit
- MAC
brew install percona-toolkit
工具说明
工具命令 | 工具作用 | 备注 |
开发类 | pt-duplicate-key-checker | 列出并删除重复的索引和外键 |
pt-online-schema-change | 在线修改表结构 | |
pt-query-advisor | 分析查询语句,并给出建议,有bug 已废弃 | |
pt-show-grants | 规范化和打印权限 | |
pt-upgrade | 在多个服务器上执行查询,并比较不同 | |
性能类 | pt-index-usage | 分析日志中索引使用情况,并出报告 |
pt-pmp | 为查询结果跟踪,并汇总跟踪结果 | |
pt-visual-explain | 格式化执行计划 | |
pt-table-usage | 分析日志中查询并分析表使用情况 pt 2.2新增命令 | |
配置类 | pt-config-diff | 比较配置文件和参数 |
在线修改表结构pt-online-schema-change
pt-online-schema-change虽然修改表结构不锁表,为了不影响业务,也最好是业务低峰期去修改。
- 其修改表结构的实现原理
- 工具会先拷贝old表的结构,创建一个新的数据表new,并且在new上进行结构修改
- 再则工具会在old表上创建创建触发器,只要old表上有增删改的操作,就会同步到new上,同时它还会把old表原来的数据同步到new表上。
- 这样子双管齐下,数据都同步过来后,在等到old表没有数据写入时,会把老表删除掉。最后把new表的名字改成old表,这样子就完成在线修改表结构的任务。既不耽误数据表的访问,也不锁表。
- 使用格式:
pt-online-schema-change --host=[数据库ip] --port=[数据库端口号] --user=[数据库用户名] --password=[数据库密码] --charset=utf8 D=库名,t=表名 --alter “修改表结构的语句” --print --execute
- 格式注意:
如果alter语句中含有中文,就需要加上–charset=utf8
在填写数据库和表的时候,需要用逗号隔开,D=库名,=表名
最后末尾一定要加上–execute才会有效执行
- 例子:
pt-online-schema-change --host=127.0.0.1 --port=3306 --user=root --password=123456 --charset=utf8 D=neti,t=t_customer_address --alter "MODIFY name VARCHAR(20) NOT NULL COMMENT '收货人'" --print --execute