多个字段一起修改的命令【500G以上一个大表,耗时3小时左右】
/opt/percona-toolkit-3.3.0/bin/pt-online-schema-change --no-check-replication-filters -uroot -p密码 --socket=/home/mysql3306/mysql-5.6.33/mysql.sock --alter=‘MODIFY COLUMN xhf_nsrsbh varchar(50),MODIFY COLUMN xhfmc varchar(100),MODIFY COLUMN ghfmc varchar(100),convert to character set utf8mb4 COLLATE utf8mb4_general_ci’ --execute D=preinvoicenew,t=t_kp_record
单个字段修改的命令
/opt/percona-toolkit-3.3.0/bin/pt-online-schema-change --no-check-replication-filters -uroot -p密码 --socket=/home/mysql3306/mysql-5.6.33/mysql.sock --alter=‘convert to character set utf8mb4 COLLATE utf8mb4_general_ci’ --execute D=preinvoicenew,t=t_kp_record_detail
总结经验:
虽然是不阻塞DML,但业务高峰期还是有点影响,还是得在业务低峰期执行,才能把影响降到最低。
第一次在2021年1月19日下午14点51分左右开始执行,后面研发人员说有影响。部分数据需要重新推。
2021-01-28需求
修改某个表的字符集
/opt/percona-toolkit-3.3.0/bin/pt-online-schema-change --no-check-replication-filters -uroot -p修改 --socket=/home/mysql3306/mysql-5.6.33/mysql.sock --alter=‘convert to character set utf8mb4 COLLATE utf8mb4_general_ci’ --execute D=preinvoicenew,t=t_requ_log
平时添加索引的命令
alter table t_kp_record add index idx_kp_record_taxno(taxno)
pt-osc命令添加索引的命令
./pt-online-schema-change -uroot -pxxx --alter='add key indx_test(col1_test) ’ --execute D=test,t=t_xxx_compensate
2021-03-16需求:
修改t_kp_record.bz 字段长度要加到500【同时在主库和从库执行修改】
执行命令如下:
/opt/percona-toolkit-3.3.0/bin/pt-online-schema-change --no-check-replication-filters -uroot -p密码 --socket=/home/mysql3306/mysql-5.6.33/mysql.sock --alter=‘MODIFY COLUMN bz varchar(500)’ --execute D=preinvoicenew,t=t_kp_record
耗时笔记:3个小时30分钟
命令执行过程输出内容如下:
Altered preinvoicenew
._t_kp_record_new
OK.
2021-03-16T22:20:35 Creating triggers…
2021-03-16T22:20:35 Created triggers OK.
2021-03-16T22:20:35 Copying approximately 14921071 rows…
……
2021-03-17T01:50:48 Dropped triggers OK.
Successfully altered preinvoicenew
.t_kp_record
.
2021-04-13需求:
电票生产 t_kp_record 需要新增一个字段
tsbz varchar 32 特殊标志J:卷烟行业 Z:房屋租赁行业,普通1.5%税率
具体命令如:
/opt/percona-toolkit-3.3.0/bin/pt-online-schema-change --no-check-replication-filters -uroot -p密码 --socket=/home/mysql3306/mysql-5.6.33/mysql.sock --alter=‘ADD COLUMN tsbz varchar(32) COMMENT “特殊标志J:卷烟行业 Z:房屋租赁行业,普通1.5%税率”’ --execute D=preinvoicenew,t=t_kp_record
耗时笔记:
从库8点多执行,大概耗时32分钟
主库10点执行,1.52分结束,耗时3小时52分
修改命令指定字符集:
/opt/percona-toolkit-3.3.0/bin/pt-online-schema-change --no-check-replication-filters -uroot -p密码 --socket=/home/mysql3306/mysql-5.6.33/mysql.sock --alter=‘ADD COLUMN tsbz varchar(32) COMMENT “特殊标志J:卷烟行业 Z:房屋租赁行业,普通1.5%税率”’ -- --execute D=preinvoicenew,t=t_kp_record