← Back to list

mysql快速修改表结构

Published on: | Views: 88

简介

发布的时候经常要修改表的结构,但是传统方法容易锁表,导致线上访问被阻塞,并且修改速度非常慢(并发访问时加锁要等很久,甚至不得不停机修改),这种情况下我们可以借助一个工具来修改,它可以不锁表,不阻塞访问,它就是pt-online-schema-change, 一个非常棒的工具。 官方地址: https://www.percona.com/doc/percona-toolkit/3.0/pt-online-schema-change.html

它的原理是通过复制表数据的方法来实现不锁表修改表结构。

用法

// 使用--dry-run来测试有没有问题
pt-online-schema-change --dry-run --alter "修改语句" D=数据库,t=表 -h 地址 -P 端口 -u 用户  -p 密码 

// 执行修改
pt-online-schema-change --execute --alter "修改语句" D=数据库,t=表 -h 地址 -P 端口 -u 用户  -p 密码 

示例1:

pt-online-schema-change --alter "ADD COLUMN c1 INT" D=sakila,t=actor

示例2:

pt-online-schema-change --alter "ENGINE=InnoDB" D=sakila,t=actor

更具体的选项解释见: https://www.percona.com/doc/percona-toolkit/3.0/pt-online-schema-change.html#options