背景:线上环境的数据库某表已经存在百万数据,在做数据初始化的时候,业务需求增加了一个字段,结果表崩溃了,最后只能找DBA协助才恢复表,蛋疼了一下午,毕竟生产环境,好在是内部系统。
方案描述:基于这种已经存在大数据的情况,查阅了大部分资料有以下解决方案
一、拷贝表结构,然后新表增加需要增加的字段,再将旧表数据insert到新表,善后删除旧表。(ps:注意如果表是有关联的要注意处理表的关联),下面是转的思路脚本
create table xx_order_bak like xx_order;
alter table xx_order_bak add column `unit` int(10) DEFAULT 1;
INSERT INTO xx_order_bak(`id`, `create_date`, `modify_date`, `address`, `amount_paid`)
select * from xx_order;
rename table xx_order to xx_order_bak1;
<p>rename table xx_order_bak to xx_order;</p>