文章目录

  • 简介:
  • 安装
  • 工具说明
  • 在线修改表结构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虽然修改表结构不锁表,为了不影响业务,也最好是业务低峰期去修改。

  • 其修改表结构的实现原理
  1. 工具会先拷贝old表的结构,创建一个新的数据表new,并且在new上进行结构修改
  2. 再则工具会在old表上创建创建触发器,只要old表上有增删改的操作,就会同步到new上,同时它还会把old表原来的数据同步到new表上。
  3. 这样子双管齐下,数据都同步过来后,在等到old表没有数据写入时,会把老表删除掉。最后把new表的名字改成old表,这样子就完成在线修改表结构的任务。既不耽误数据表的访问,也不锁表。



mysql更改表空间 mysql如何修改表数据_mysql




  • 使用格式:

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