日期:2014-05-16 浏览次数:20684 次
上一篇提出了一种改进主从延迟的方案。虽然能够实现主从无延迟同步,但在维护上比较复杂,还存在网络消耗问题,这里是一个改进的版本。
?
一、之前方案简述及问题分析
方案如图。其中用多个MySQL充当transfer的角色。每个transfer负责同步master的一部分表。在我的试验中有8个transfer,也就是有8个MySQL实例。
?
问题: 1、维护复杂。在从库及其上需要增加8个实例,增加维护成本,而且不利于加表操作。
?????? 2、增加网络开销。虽然在transfer的IO线程作了过滤,减少每个transfer的写盘量和SQL线程的空转,但master还是向每个tranfer发了所有的数据。网络传输的日志量是原来的n倍。
?
二、改进方案
基于上述的两个问题考虑,考虑将transfer的多进程改成多线程。
如图:
?
??? 1、用一个MySQL充当transfer。 transfer设置为master