使用percona提供的工具进行大表的在线DDL操作,如添加字段、删除字段、修改字段属性等
原理
- 创建一个和原来表结构一样的临时表并ddl
- 将原表数据写入到临时表中(通过insert ...select方式),并且在原表上创建触发器,如果原表有数据写入,通过触发器方式将新增的数据写入临时表中(前提该表之前没有触发器)
- 写入完后,重命名临时表和原表名称
- 删除原表
使用方法
- 下载 wget http://percona.com/get/percona-toolkit.tar.gz
- 安装依赖 yum install perl-devel perl-Time-HiRes perl-DBI perl-DBD-MySQL -y
- 测试 ./pt-online-schema-change --user=用户名 --password=密码 --host=127.0.0.1 --alter "ADD COLUMN app VARCHAR(10) NOT NULL" D=数据库名,t=表名 --dry-run
- 真正执行 ./pt-online-schema-change --user=用户名 --password=密码 --host=127.0.0.1 --alter "ADD COLUMN app VARCHAR(10) NOT NULL" D=数据库名,t=表名 --execute