千家信息网

pt-online-schema-change 在线更改MySQL表结构

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,总所周知,数据库最昂贵的操作莫过于DDL操作,因为MySQL在修改表期间会阻塞任何读写操作的,基本上你的业务出于瘫痪状态了。对于庞大的可能历时好几个小时才完成,简直就是个恶梦,没法容忍的操作。Perc
千家信息网最后更新 2026年11月02日pt-online-schema-change 在线更改MySQL表结构

总所周知,数据库最昂贵的操作莫过于DDL操作,因为MySQL在修改表期间会阻塞任何读写操作的,基本上你的业务出于瘫痪状态了。对于庞大的可能历时好几个小时才完成,简直就是个恶梦,没法容忍的操作。

Percona开发了一系列工具Percona Toolkit包,其中有一工具pt-online-schema-change可以在线执行DDL操作,不会阻塞读写操作从而影响业务程序。当然啦,MySQL 5.6也增强了一些在线DDL功能。下面主要是说pt-online-schema-change在线更改表结构。

pt-online-schema-change原理
1、如果存在外键,根据alter-foreign-keys-method参数的值,检测外键相关的表,做相应设置的处理。

2、创建一个新的表,表结构为修改后的数据表,用于从源数据表向新表中导入数据。

3、创建触发器,用于记录从拷贝数据开始之后,对源数据表继续进行数据修改的操作记录下来,用于数据拷贝结束后,执行这些操作,保证数据不会丢失。

4、拷贝数据,从源数据表中拷贝数据到新表中。

5、修改外键相关的子表,根据修改后的数据,修改外键关联的子表。

6、rename源数据表为old表,把新表rename为源表名,并将old表删除。

7、删除触发器。

官网下载最新版的rpm包,然后yum本地安装,自动解决依赖等问题,最好这样安装。

wget https://www.percona.com/downloads/percona-toolkit/3.0.4/binary/redhat/7/x86_64/percona-toolkit-3.0.4-1.el7.x86_64.rpmyum install percona-toolkit-3.0.4-1.el7.x86_64.rpm

执行,比如给BorrowOrders表增加一个字段

time pt-online-schema-change --host=10.153.1.200 --port=3306 --user=prod --password="yourpasswd" --alter="ADD COLUMN internalCode VARCHAR(32) DEFAULT '0'" --execute D=trade,t=BorrowOrders --set-vars innodb_lock_wait_timeout=50 --no-check-replication-filters --recursion-method=none

此之外,还可以监测下是否有冗余索引

time pt-duplicate-key-checker --host=10.153.1.200 --port=3306 --user=prod --password="yourpasswd",D=trade --tables=Persons

数据 数据表 拷贝 在线 结构 业务 工具 触发器 阻塞 昂贵 冗余 功能 原理 参数 字段 小时 就是 庞大 恶梦 数据库 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技企业 互联网科技公司经营范围 互联网科技未来 奇酷互联网科技公司 互联网金融科技平台 互联网科技大会 互联网科技公司介绍 成都狮子座互联网科技 蓝色互联网科技 互联网科技公司实习生 消费医药和互联网科技 链环科技传统企业怎么转型互联网 科技赋能视角下互联网保险发展 徐州市互联网科技有限公司 为客找房互联网科技公司怎么样 互联网金融科技元年 富国互联网金融科技混合基金 互联网安防科技感 广州互联网高科技取餐柜 株洲百竞科技的互联网营销顾问 礼当家互联网科技 云电互联网科技 西安互联网科技公司 崇明区互联网教育科技诚信经营 洛阳昕诺飞互联网科技有限公司 互联网科技人工智能实验室 东营紫格互联网科技 九思连强互联网电子科技有限公司 上海乐五互联网科技有限公司 杭州科技互联网公司有哪些
0