关闭

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

229人阅读 评论(0) 收藏 举报
分类:

为了尽可能的降低系统停止写入的时间,最佳的方案就是采用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或者作为读库开放,这样可以避免数据写入的冲突,防止数据不一致的情况发生。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:43761次
    • 积分:1520
    • 等级:
    • 排名:千里之外
    • 原创:101篇
    • 转载:13篇
    • 译文:8篇
    • 评论:2条