MySQL在线修改大表实践笔记

2023年 11月 23日 31.7k 0

多个字段一起修改的命令【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

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论