首先是版本选择
MySQL社区版,用户群体最大
MySQL企业版,收费
Percona Server版,新特性多
MariaDB版,国内用户不多
我的建议
MySQL社区版>Percona Server
>MariaDB>MySQL 企业版
MySQL社区版,用户群体最大
MySQL企业版,收费
Percona Server版,新特性多
MariaDB版,国内用户不多
我的建议
MySQL社区版>Percona Server
>MariaDB>MySQL 企业版
不过现在如果大家使用RDS服务,基本还以社区版为主
Online DDL问题
原生MySQL执行DDL是需要锁表的,对服务影响很大,锁表期间业务是无法写数据的
MySQL在这方面支持的是比较差的,大表做DDL对DBA来说是很痛苦的,相信很多人经历过
如何做到Online DDL呢,是不是就无解了呢 当然不是
上面表格里提到的 Facebook OSC和5.6 OSC 也是目前两种比较靠谱的方案
MySQL 5.6的OSC 方案还是解决不了 DDL时候到从库延时的问题,所以现在建议使用Facebook OSC这种思路更优雅
下图是Facebook OSC的思路
后来Percona公司根据Facebbook OSC思路,用perl重写了一版,就是我们现在用的很多pt-online-schema-change,软件本身也非常成熟,支持目前主流版本。
优点
1.无阻塞写入
2.完善的条件检测和延时负载策略控制
不过值得一提的是,腾讯互娱的DBA在内部分支上也实现了Online DDL,之前测试过确实不错,速度快,原理是通过修改InnoDB存储格式来实现。
使用pt-online-schema-change限制
改表时间会比较长,相比直接alter table改表
修改的表需要有唯一键或主键
不要并发太多修改同一端口