Ron.Zheng

最反主流的行动不是抵制潮流,而是在潮流中不丢弃自己的独立思考.

持久化存储-MySql拓展-Master-Master

为了尽可能的降低系统停止写入的时间,最佳的方案就是采用Dual-Master架构,即Master-Master架构。


所谓的Dual-Master,实际上就是两台MySQL互相作将对方作为Master,自己作为对方的Slave。

这样任何一台数据库服务器上的数据变更,都会通过MySQL的复制机制同步到另一台服务器上。

由于MySQL在记录Binary log时,记录了当前的server-id,server-id在我们配置MySQL时就已经设置好了。

一旦有了server-id,MySQL就能够很容易的判断最初的写入是在那台服务器上发生的,MySQL不会将复制所产生的变更记录到Binary Log,这样就避免了服务器间数据的循环复制。

当然,我们搭建Dual-Master架构,并不是让两台Master都提供写入服务,因为这样会导致一些数据写入时数据不一致的问题。例如:加入Master A和Master B几乎同时对一条数据进行了更新,对Master A的更新比对Master B的稍微快一点点,当对Master A的更新最终同步到Master B时, 老版本的数据会把版本更新的数据覆盖,而且不会抛出异常,从而导致数据不一致的现象发生。

在通常情况下,我们只开启一台Master的写入,另一台Master仅仅Stand By或者作为读库开放,这样可以避免数据写入的冲突,防止数据不一致的情况发生。


阅读更多
所属专栏: 分布式系统基础专栏
想对作者说点什么? 我来说一句

mysql-master-master

2009年07月31日 134KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭