赞
踩
一、常见的几种方案
1.1 MySQL源生的IN-PLACE ONLINE DDL
5.5,5.6 开始支持
5.7 支持的更好,有更多ddl操作支持online
8.0 支持快速加列功能
1.2 第三方工具
1. pt-online-schema-change
2. gh-ost
1.3 slave 先ddl,后切换主从
二、方案剖析
2.1 MySQL源生的IN-PLACE ONLINE DDL
原理
原理比较复杂,不一一解读。但是中间有几个重要的过程:
1. 加一会排它锁,开启战场,并释放排它锁
2. 记录ddl期间产生的增量dml(大小由innodb_online_alter_log_max_size控制)
3. 应用这些增量dml
4. 再加一会排它锁,清理战场,释放排它锁
这里关心的问题:
1. 如果再ddl期间,innodb_online_alter_log_max_size的大小被占满,会有怎样的后果?
2. 如果DDL期间,被强行终止了,会有怎么样的后果?
优点
1. 官方出品,原生态,品质有保障
缺点
1. 有所等待风险
2. innodb_online_alter_log_max_size 是有限制的
3. 有可能造成主从延迟
4. 不是所有的ddl都是online的,对ddl类型有要求
哪些DDL可以online (基于5.7的官方文档
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。