03-在线修改大表结构pt-online-schema-change
文章目录
- 1: 使用场景 Scenario
- 2: 在线修改大表的可能影响
- 3: pt-online-schema-change 介绍
- 4: 解决了什么问题
- 5: pt-online-schema-change 安装
- 6: pt-online-schema-change 使用
- 7: Others
1: 使用场景 Scenario
在线数据库的维护中,总会涉及到研发修改表结构的情况,修改一些小表影响很小,而修改大表时,往往影响业务的正常运转,如表数据量超过 500W,1000W,甚至过亿时.
2: 在线修改大表的可能影响
- 在线修改大表的表结构执行时间往往不可预估,一般时间较长
- 由于修改表结构是表级锁,因此在修改表结构时,影响表写入操作
- 如果长时间的修改表结构,中途修改失败,由于修改表结构是一个事务,因此失败后会还原表结构,在这个过程中表都是锁着不可写入,严重影响业务
- 修改大表结构容易导致数据库 CPU、IO 等性能消耗,使 MySQL 服务器性能降低
- 在线修改大表结构容易导致主从延时,从而影响业务读取
3: pt-online-schema-change 介绍
pt-online-schema-change 是 percona 公司开发的一个工具,在 percona-toolkit 包里面可以找到这个功能,它可以在线修改表结构
原理:
|
|
4: 解决了什么问题
- 降低 Master/Slave 延时
- 减少对业务的影响
- 降低对服务器资源的消耗
5: pt-online-schema-change 安装
去官网下载对应的版本,官网下载地址:https://www.percona.com/downloads/percona-toolkit/LATEST/
安装依赖包
|
|
6: pt-online-schema-change 使用
6.1 参数
./bin/pt-online-schema-change –help 可以查看参数的使用,我们只是要修改个表结构,只需要知道几个简单的参数就可以了
|
|
6.2 为避免每次都要输入一堆参数,写个脚本复用一下,pt.sh
|
|
6.3 添加表字段
|
|
6.4 修改表字段
|
|
6.4 添加索引
|
|
7: Others
-
pt-online-schema-change 工具还有很多其他的参数,可以有很多限制,比如限制 CPU、线程数量、从库状态等等,不过我做过一个超过 6000W 表的结构修改,发现几乎不影响性能,很稳定很流畅的就修改了表结构,所以,对以上常规参数的使用基本能满足业务
-
一定要在业务低峰期做,这样才能确保万无一失
文章作者 lucas
上次更新 2022-03-04 (b3cbdf7)