业务背景:
该系统有一张表数据量已达到34亿,并且有个字段长度不够,导致很多数据无法插入。因为业务只要保留近2个月数据即可,所以需要接下来需要做2点:1,扩字段长度 2,只保留近2个月的数据。
于是有了接下来的方案:
1,delete 2个月 之前的数据 ,然后扩字段长度----- 否决:binlog太大
2,truncate表 ,然后扩字段长度 --- 否决,业务需要保留2个月数据
3,1,新建一张同样的表 然后扩字段长度,并将两个月的输入插入进去,2,然后 将新建表换个原表名,原表名换为bak表。3, 从bak表中将 最近的数据补充到 业务表中。 --- 通过
以下是方案3的详细步骤:【需要历史数据 & 新数据的插入】的归档重建
业务表 tb3
create table tb3_bak like tb3;
show create table tb3_bak\G
insert into tb3_bak select * from tb3 where create_time>='2023-07-01' and create_time<'2023-07-11 17:00:00';
rename table tb3 to tb3_wait4drop, tb3_bak to tb3;
扩表字段 动作忽略。。。。。。。
insert into tb3 select * from tb3_wait4drop where create_time>='2023-07-11 17:00:00';
待验证通过后(下个变更窗口):
drop table tb3_wait4drop;