翻箱倒柜, 找出原来做MySQL主从同步的时候写的一个文档.备查.
先说一下结论: 如果在主库上有很频繁的写入操作,那么很可能会将主从之间的同步打断.
在这种情况下,从从库读取的数据很可能就是脏数据,主库已经修改而从库却没有及时更新。
这种现象,在测试环境上曾经多次重现过,在实际生产环境上也出现过。
究其原因,这种主从之间的同步完全是依赖软件手段来实现的,在具体工作过程中缺乏高可用性的保障,如果应用本身可以容忍这种大概率的不确定性,那么这个方案是可行有效的,而如果方案本身对于数据延迟是不能容忍的,那么用这个方案就具有很大的风险和不确定性。
采用这种主从同步的方案,本质上是将原来单点的数据库风险,转换成了主从两个层次,而且可能不同步的通讯和执行风险。
这里还有一个额外的风险,就是在实测过程中,主从同步会消耗大量的网络通讯IO,如果是多级数据库同步的话,甚至可能会造成网络通讯的风暴,而一旦网络不满足中断的话,主从同步就会停止,必须手工重新启动才行。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~