复制优化
InnoDB优化
其他参数优化
MySQL复制
MySQL应用最普遍的应用的技术,扩展成本低
逻辑复制
单线程问题,从库延时问题
可以做备份或读复制
问题很多,但是能解决基本问题
上图是MySQL复制原理图,红框内就是MySQL一直被人诟病的单线程问题
单线程问题也是MySQL主从延时的一个重要原因,单线程解决方案
1.官方5.6+多线程方案
2. Tungsten为代表的第三方并行复制工具
3.sharding
上图是MySQL5.6 目前实现的并行复制原理图,是基于库级别的复制,所以如果你只有一个库,使用这个也意义不大
上图是MySQL复制原理图,红框内就是MySQL一直被人诟病的单线程问题
当然MySQL也认识到5.6这种并行的瓶颈所在,所以在5.7引入了另外一种并行复制方式,基于logical timestamp的并行复制,并行复制也不再首先于库个数,效率会大大提升
上图是5.7的logical timestamp的复制原理图
上图是MySQL复制原理图,红框内就是MySQL一直被人诟病的单线程问题
刚才我也提到MySQL原来只支持异步复制,这种数据安全性是非常差的,所以后来引入了半同步复制,从5.5开始支持
上图是原声异步复制和半同步复制的区别。可以看到半同步通过从库返回ACK这种方式确认从库收到数据,数据安全性大大提高
在5.7之后 ,半同步也可以配置你指定几个从库参与半同步复制,之前版本都是默认一个从库
对于半同步复制效率问题,有一个小的优化的,就是使用5.6+的mysqlbinlog以daemon方式作为从库,同步效率会好很多
关于更安全的复制,MySQL 5.7也是有方案的,方案名叫Group replication 官方多主方案,基于Corosync 实现
上图是MySQL复制原理图,红框内就是MySQL一直被人诟病的单线程问题