MySQL 大表 DDL 怎么安全执行?
问题:大表 ALTER(加列/改类型)在 8.0 前会锁表(copy table,阻塞读写)。方案:① 8.0 instant DDL:加列/加索引等支持秒级(ALGORITHM=INSTANT,只改元数据),首选;② INPLACE:8.0 大多数 DDL 支持 online(ALGORITHM=INPLACE, LOCK=NONE),不阻塞读写;③ 低版本/复杂 DDL:pt-online-schema-change(Percona Toolkit):建影子表→同步增量(触发器)→切换表名,业务无感;④ 拆小步:分批操作、低峰执行;⑤ 备份先行、监控主从延迟(DDL 也会复制到从库)。注意:8.0 中 ALTER TABLE ... ALGORITHM=INPLACE 需评估版本支持情况。
一起交流
分享经验,让问题更进一步
讨论,从你的观点开始
还没有回复,欢迎补充经验或分享不同的思路。