从 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"即可

pt-osc工具 - 支持对部分数据的表结构变更_字段