34亿的mysql表如何优雅的扩字段长度兵并归档重建

业务背景:

该系统有一张表数据量已达到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;

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值