• 售前

  • 售后

热门帖子
入门百科

详解MySQL双活同步复制四种解决方案

[复制链接]
法克鱿吧吧sw 显示全部楼层 发表于 2021-10-26 13:36:34 |阅读模式 打印 上一主题 下一主题
目录


  • 基于MySQL原生复制主主同步方案  
  • 基于Galera replication方案  
  • 基于Group Replication方案  
  • 基于canal方案
对于数据及时同步,其焦点是需要基于日志来实现,是可以实现准及时的数据同步,基于日志实现不会要求数据库自己在设计和实现中带来任何额外的约束。

基于MySQL原生复制主主同步方案  


这是常见的方案,一般来说,中小型规模的时间,采用这种架构是最省事的。
两个节点可以采用简单的双主模式,而且使用专线毗连,在master_A节点发生故障后,应用毗连快速切换到master_B节点,反之也亦然。有几个需要注意的地方,脑裂的情况,两个节点写入雷同数据而引发冲突,同时把两个节点的auto_increment_increment(自增步长)和auto_increment_offset(自增起始值)设成不同值。其目标是为了避免master节点不测宕机时,可能会有部分binlog未能及时复制到slave上被应用,从而会导致slave新写入数据的自增值和原先master上冲突了,因此一开始就使其错开;当然了,如果有符合的容错机制能解决主从自增ID冲突的话,也可以不这么做,使用更新的数据版本5.7+,可以使用多线程复制的方式可以很大程度低落复制延迟,同时,对复制延迟特别敏感的另一个备选方案,是semi-sync半同步复制,基本上无延迟,不外事件并发性能会有不小程度的损失,特别是在双向写的时间,需要综合评估再决定。


基于Galera replication方案  

Galera是Codership提供的多主数据同步复制机制,可以实现多个节点间的数据同步复制以及读写,而且可保障数据库的服务高可用及数据一致性,基于Galera的高可用方案告急有MariaDB Galera Cluster和Percona XtraDB Cluster(简称PXC)。



如今PXC用的会比力多一些,数据严酷一致性,尤其得当电商类应用,不外PXC也是有其局限性的,如果并发事件量很大的话,发起采用InfiniBand网络,低落网络延迟,因为PXC存在写扩大以及短板效应,并发服从会有较大损失,类似semi-sync半同步复制,Gelera实际只能用三个节点,网络抖动造成的性能和稳固性习惯性题目

基于Group Replication方案  


通过Paxos协议提供数据库集群节点数据强一致包管,MGR准确来说是MySQL官方推出的高可用解决方案,基于原生复制技能,并以插件的方式提供,而且集群间全部节点可写入,解决了单个集群的写入性能,全部节点都能读写,解决网络分区导致的脑裂题目,提升复制数据的可靠性,不外现实还是有些暴虐,如今尝鲜的并不是许多,同时仅支持InnoDB表,而且每张表肯定要有一个主键,用于做write set的冲突检测,必须打开GTID特性,二进制日志格式必须设置为ROW,用于选主与write set
COMMIT可能会导致失败,类似于快照事件隔离级别的失败场景,如今一个MGR集群最多支持9个节点,不支持外键于save point特性,无法做全局间的约束检测与部分部分回滚,二进制日志不支持binlog event checksum

基于canal方案

对于数据库的及时同步,阿里巴巴专门有一个开源项目,即otter来实现分布式数据库的同步复制,其焦点思想仍旧是通过获取数据库的增量数据日志,来进行准及时的同步复制。因此otter自己又依靠于别的一个开源项目即canal,该项目重点则是获取增量数据库同步日志信息。

当前otter的重点是实现mysql间的数据库同步复制,基本即使用的类似技能来实现两个mysql数据库间的双向同步数据库复制。要注意这个双向自己指既可以A->B,也可以从B->A,在某个时间节点自己是单向的。
主从复制分成三步:

master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events,可以通过show binlog events进行检察);
slave将master的binary log events拷贝到它的中继日志(relay log);
slave重做中继日志中的事件,将改变反映它自己的数据。
canal原理相对比力简单:

canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议
mysql master收到dump哀求,开始推送binary log给slave(也就是canal)
canal分析binary log对象(原始为byte流)
更多参考 https://github.com/alibaba/canal
总结
以上所述是小编给大家先容的MySQL 双活同步复制四种解决方案,盼望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对草根技能分享网站的支持!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作