专栏首页性能与架构Mysql Dual Master双主复制架构

Mysql Dual Master双主复制架构

常用的复制方式是一主一从的基本架构,但有时可能还会需要在一些特定的场景下进行Master的切换

如在Master端进行一些维护操作时,可能要停止MySQL的服务。这时候,为了尽可能减少停机时间,最佳做法就是将Slave节点切换成Master来提供写入的服务

但这样一来,原来Master节点的数据就会和实际的数据不一致了。当原Master启动可以正常提供服务的时候,由于数据不一致,不得不通过反转原Master - Slave关系,重新搭建Replication环境,并以原Master作为Slave来对外提供读服务。重新搭建Replication环境会给我们带来很多额外的工作量,如果没有合适的备份,可能还会让Replication的搭建过程非常麻烦

为了解决这个问题,可以通过搭建Dual Master环境来处理,就是两个MySQL Server互相将对方作为自己的Master,自己作为对方的Slave来进行复制。这样,任何一方所做的变更,都会通过复制应用到另外一方的数据库中

这样搭建复制环境之后,会不会造成两台MySQL之间的循环复制?

MySQL早就想到了这一点,所以在MySQL的Binary Log中记录了当前MySQL的server-id,而且这个参数也是搭建MySQL Replication的时候必须明确指定的,只有Master和Slave的server-id参数值不一致时MySQL Replication才能搭建成功。一旦有了server-id的值,MySQL就很容易判断某个变更是从哪一个MySQL Server最初产生的,所以就很容易避免出现循环复制的情况

通过Dual Master复制架构,能够避免因为正常维护所带来的重新搭建Replication环境的操作,因为任何一端都记录了自己当前复制到对方的什么位置了,在系统搭建之后,它就会自动从之前的位置开始重新复制,不需要人为地干预,大大节省了维护成本

不仅如此,Dual Master复制架构和一些第三方的HA管理软件结合,还可以在当前使用的Master出现异常无法提供服务之后,非常迅速地自动切换另外一端来提供相应的服务,减少异常情况下带来的停机时间,也不需要人工干预

当然,搭建一个Dual Master环境,并不是为了让两端都提供写的服务。在正常情况下,只会将其中一端开启写服务,另外一端仅仅提供读服务,或者完全不提供任何服务,只是作为一个备用的机器存在

为什么一般都只开启其中的一端来提供写服务呢?主要还是为了避免数据的冲突,防止造成数据的不一致性

本文分享自微信公众号 - 性能与架构(yogoup)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-08-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Mysql 复制的常用拓扑结构概览

    一主一从 ? 是最基础的复制结构,用来分担之前单台数据库服务器的压力,可以进行读写分离 一主多从 ? 一台 Slave 承受不住读请求压力时,可以添加多台,进行...

    dys
  • Mysql 双主与级联复制结合架构

    在有些应用场景中,读写压力差别比较大,读压力特别大,一个Master可能需要上10台甚至更多的Slave才能支撑读的压力 这时候,Master就会比较吃力了,因...

    dys
  • Mysql 的GTID主从复制方式

    GTID的作用 GTID 是‘全局事务ID’的意思,在 MySQL5.6 中被添加进来 以前 MySQL 的主从复制是基于复制点的,slave 从 master...

    dys
  • 如何在Ubuntu 14.04上使用MySQL和Ruby on Rails应用程序

    Ruby on Rails使用sqlite3作为其默认数据库,在许多情况下效果很好,但可能不适合您的应用程序。如果您的应用程序需要客户端/服务器SQL数据库(如...

    信姜缘
  • 《程序人生》系列-害敖丙差点被开除的P0事故

    这是帅丙真实事件,大家都知道很多公司都是有故障等级这么一说的,这就是敖丙在公司背的P0级故障,敖丙差点因此被解雇,事情经过十分惊心动魄,我的心脏病都差点复发。

    敖丙
  • WebLogic CVE-2018-2628漏洞验证

    北京时间4月18日凌晨,Oracle官方发布了4月份的关键补丁更新CPU(CriticalPatchUpdate),其中包含一个高危的Weblogic反序列化漏...

    FB客服
  • 【小家java】java8新特性之---Stream API 详解 (Map-reduce、Collectors收集器、并行流、groupby多字段分组)

    Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。

    YourBatman
  • magento换域名和服务器要怎么操作

      今天客户让ytkah帮忙把magento迁移到新服务器并换新域名,很多朋友可能在迁移过程中遇到了很多问题,下面就整理一下亲测可用的步骤吧。本文以magent...

    ytkah
  • MySQL集群的几种方案

    组建MySQL集群的几种方案 LVS+Keepalived+MySQL(有脑裂问题?但似乎很多人推荐这个) DRBD+Heartbeat+MySQL(有一台机器...

    庞小明
  • 为什么同样的WPF控件在不同的电脑上呈现外观不一致

    今天有同事跑过来说遇到了一个奇怪的bug,同样的程序在win7和win10上界面相差了2个像素

    黄腾霄

扫码关注云+社区

领取腾讯云代金券