从 Percona Toolkit 3.6.0 开始,pt-online-schema-change支持选项--where,支持对部分数据的表结构变更。
例如,Java研发想要提取3个月内的数据,并对XX字段属性进行修改。
那么,你按照我的演示,自己来操作一下。
代码语言:bash复制# pt-online-schema-change h=127.0.0.1,P=3306,u=admin,p=123456,D=test,t=sbtest1
--alter="modify pad varchar(300)"
--where="create_time>=DATE_FORMAT(DATE_SUB(now(),interval 3 month),'%Y-%m-%d')"
--execute
--swap-tables
--no-drop-new-table
--no-drop-old-table
--new-table-name=sbtest1_tmp_20240626
--force
解释:
1) 创建一个新表sbtest1_tmp_20240626。
2) create_time>=DATE_FORMAT(DATE_SUB(now(),interval 3 month),'%Y-%m-%d')的数据存放至sbtest1_tmp_20240626
3) 原表sbtest1变更为_sbtest1_old
4) 临时表sbtest1_tmp_20240626表名变更为原表名sbtest1
5) 如果只想提出3个月的数据,不更改表结构,那么设置--alter="engine=innodb"即可