从 Percona Toolkit 3.6.0 开始,pt-online-schema-change支持选项
--where,支持对部分数据的表结构变更。
例如,Java研发想要提取3个月内的数据,并对XX字段属性进行修改。
那么,你按照我的演示,自己来操作一下。
# 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"即可