在mysql中如果遇到修改大的表,不管是增加字段还是修改表中的字段名称,这个对于线上环境来说都是一个大的工程,最基本的保障是数据的丢失问题,第二个就是针对线上环境的影响问题。如果说一点不影响这个有点不太可能,只能把这个影响降低到最低,可以在低峰期进行操作,不过这个操作也需要时间,所以在操作之前也需要进行一下规划,避免影响到其他的业务。不过不管怎么样流程是一样的,这里简单说一下流程,仅供参考:
第一步:
先创建一个临时表,把旧表中的表结构(包括索引)复制到新创建的临时表中。
create table new_table wulaoer like wulaoer_old_table;
第二步:
给新建的临时表增加需要增加的字段,然后把旧表中的数据复制过来
insert into wulaoer(filed1,filed2…) select filed1,filed2,… from wulaoer_old_table;
第三步:
把旧表中的数据写入到新表后,需要把旧表备份出来后,然后删除旧表,在修改新表的名称即可。
在大表这种增加字段避免不了数据丢失的问题,所以在做这种操作时做好环境准备,如果是高峰期这种情况丢失数据相对较多,如果是在低峰期,在加上锁表会保证数据不会丢失,但是会影响用户的使用,如果在凌晨用户较少使用时间短可以,但是这个时间段也避免中间出现意外,还是需要做好备份。
最后一步,就是提醒,数据操作需谨慎,需要先在测试环境做一边,再在生产环境进行测试。
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏