业务背景:
该系统有一张表数据量已达到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';
待验证通过后(下个变更窗口):文章来源:https://www.toymoban.com/news/detail-684052.html
drop table tb3_wait4drop;文章来源地址https://www.toymoban.com/news/detail-684052.html
到了这里,关于34亿的mysql表如何优雅的扩字段长度兵并归档重建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!