vlambda博客
学习文章列表

面试 || 17 MySQL主从同步延时分析

mysql的主从复制都是单线程的操作,主库对所有DDLDMLSQL语句)产生的日志写进binlog,由于binlog是顺序写,所以效率很高,slavesql thread线程将主库的DDLDML操作事件在slave中重放。DMLDDLIO操作是随机的,不是顺序,所以成本要高很多,另一方面,由于sql thread也是单线程的,当主库的并发较高时,产生的DML数量超过slaveSQL thread所能处理的速度,或者当slave中有大型query语句产生了锁等待,那么延时就产生了。

解决方案:

1.业务的持久化层的实现采用分库架构,mysql服务可平行扩展,分散压力。

2.单个库读写分离,一主多从,主写从读,分散压力。这样从库压力比主库高,保护主库。

3.服务的基础架构在业务和mysql之间加入memcache或者rediscache层。降低mysql的读压力。

4.不同业务的mysql物理上放在不同机器,分散压力。

5.使用比主库更好的硬件设备作为slavemysql压力小,延迟自然会变小。

6.使用更加强劲的硬件设备


 

有问题可联系俺哈