需求描述
给一个几千万数量级的大表添加字段
实施过程
由于表中数据量太大,不能直接添加,我们使用 percona 工具 pt-online-change-schema 来添加字段。
cd ./pt-online-schema-change --alter "add column enname varchar(32) not null default ''" --execute D=mydb,t=test,u=root,p=123456
问题描述
加字段的过程由于连接中断,添加字段未能成功,我们重新执行添加字段命令,但是报错如下:
No slaves found. See --recursion-method if host ...... has slaves. Not checking slave lag because no slaves were found and --check-slave-lag was not specified. The table `test.`tab1` has triggers. This tool needs to create its own triggers, so the table cannot already have triggers.
这个报错提示触发器已经存在
问题分析
我们知道使用 pt-online-change-schema 来添加字段会创建三个触发器(insert、update、delete),所以我们需要删除这三个触发器后再执行添加字段命令
解决方案
1.查询触发器
select * from in;
2.删除触发器
找到对应的TRIGGER_SCHEMA和TRIGGER_NAME,然后删除
mysql> drop trigger ; mysql> drop trigger ; mysql> drop trigger ;
3.重新执行添加字段的命令即可