美文网首页
MySQL数据双向同步回环解决方案

MySQL数据双向同步回环解决方案

作者: QI的咖啡 | 来源:发表于2023-07-04 16:29 被阅读0次

    1、回环问题的产生

    image.png

    数据回环的产生如上图所示,数据从A实例通过数据组件到B实例之后,又会从B实例回到A实例,从而形成了数据同步环的问题。

    2、解决方案

    要解决数据回环的问题,主要的思路就是能给同步组件产生的binlog打标,用来标记binlog是同步组件写入的。binlog的打标通常有两种方案,具体的方案如下:

    a、同步数据写到对端时, 同一个事务带上一个特定操作,对向链路识别这个操作,决定整个事务是否同步

    image.png

    同步组件在写入目标端库的时候会带上一个特殊的操作逻辑,用来识别是否同步,如果识别到了这种标记就中断同步

    优点:通用,什么版本的mysql都支持
    缺点:会有一点mysql的binlog冗余
    实践:otther(阿里的开源双向同步组件),解决双向同步回环问题用的就是这种模式。

    b、依赖数据库自身提供的防回环机制(比如 MySQL GTID),同步工具做相应动作

    GTID:集群内事务唯一ID,GTID=server_uuid:transaction_id
    自动GTID生成:


    image.png

    手动设置GTID:


    image.png

    凡是由同步组件更新的数据都会将GTID设置成源端的GTID,这样再反向链路中就可以通过gtid中的server_id数据判断出是否需要同步了

    优点:没有额外的binlog数据产生
    确定:mysql数据库版本必须要支持gtid
    实践:cloud-canal (商业版本的同步组件),解决双向同步回环问题用的就是这种模式。

    相关文章

      网友评论

          本文标题:MySQL数据双向同步回环解决方案

          本文链接:https://www.haomeiwen.com/subject/sihhudtx.html