mysql如何在线修改大表结构

参考来源:https://blog.csdn.net/wsk1103/article/details/80960300

简介:

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表,这样子就完成在线修改表结构的任务。既不耽误数据表的访问,也不锁表。
    在这里插入图片描述
  • 使用格式:

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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值