mysql大表修改字段

avatar 2022年12月6日18:15:11 评论 235 次浏览

mysql中如果遇到修改大的表,不管是增加字段还是修改表中的字段名称,这个对于线上环境来说都是一个大的工程,最基本的保障是数据的丢失问题,第二个就是针对线上环境的影响问题。如果说一点不影响这个有点不太可能,只能把这个影响降低到最低,可以在低峰期进行操作,不过这个操作也需要时间,所以在操作之前也需要进行一下规划,避免影响到其他的业务。不过不管怎么样流程是一样的,这里简单说一下流程,仅供参考:

第一步:

先创建一个临时表,把旧表中的表结构(包括索引)复制到新创建的临时表中。

create table new_table wulaoer like wulaoer_old_table;

第二步:

给新建的临时表增加需要增加的字段,然后把旧表中的数据复制过来

insert into wulaoer(filed1,filed2…) select filed1,filed2,… from wulaoer_old_table;

在复制过程中肯定需要一些时间,这个时候如果有新增数据需要把新增的数据也复制过来,这里可以使用cxv导入导出,也可以使用ide的插件,最好的方式就是把旧表加锁,避免写入。

第三步:

把旧表中的数据写入到新表后,需要把旧表备份出来后,然后删除旧表,在修改新表的名称即可。

在大表这种增加字段避免不了数据丢失的问题,所以在做这种操作时做好环境准备,如果是高峰期这种情况丢失数据相对较多,如果是在低峰期,在加上锁表会保证数据不会丢失,但是会影响用户的使用,如果在凌晨用户较少使用时间短可以,但是这个时间段也避免中间出现意外,还是需要做好备份。

最后一步,就是提醒,数据操作需谨慎,需要先在测试环境做一边,再在生产环境进行测试。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: