如何实现MySQL异地多活场景

作为现代化的互联网企业 ,最怕的是什么 ?是意外!由各种意外导致的数据库问题,磁盘问题、网络问题、人员误操作问题等等,这些问题都可能导致数据不可用或者丢失,造成重大损失。因此,很少会有企业采用「单机」数据库架构,尽管这个架构简单明了,却经不起任何的意外,所以大部分企业都会采用更加安全可靠的「主从高可用」架构。这种架构通常具备一个主库(Master)和一个或多个从库(Slave),所有从库都实时保存了主库最新数据的副本,当主库出现问题无法访问时,保证从库可以迅速接管。但实际上,你的「主从高可用」架构通常是部署在一个机房的多台服务器中,在遭遇火灾、地震、线缆被意外挖断等人为不可控的灾害时,主从高可用架构将形同虚设,你的数据照样会被一锅端。这就是我今天想聊的话题,单一机房内的高可用并不能算真正意义上的高可用,而「跨机房容灾」甚至「异地容灾」才算。
异地容灾?异地多活?顾名思义,异地容灾就是在「主从高可用」架构的基础上,把服务器分别部署在不同地域的机房中,当中心节点地域的机房发生灾害,其他单元节点所处地域的服务器可以迅速接管业务,确保业务的可用性,但是这又会带来新的问题,单元节点平时只是作为「灾备实例」存在,谁能确保在所有中心节点的流量切换到单元节点后不出任何问题呢?因此,这个方案是存在风险的。而异地多活则是异地容灾的一种升级方案,单元节点如果仅仅是作为灾备实例,那也太浪费了,不如和中心节点一起,同步处理业务流量,这样一来,不仅可以提高资源利用率,也能保证在任意一个节点失效时,其他节点可以平稳接管流量。要做到这一点,我们就要解决各节点之间的数据一致性问题。上图就是一个异地多活的解决方案,其核心是在所有节点间建立实时的数据同步机制,以确保各个节点的数据一致性。当中心节点发生数据变更时,这些变更会被实时同步到所有单元节点,反之亦然,形成了一个双向同步的复制链路,确保所有节点中的数据保持实时一致。
在这里插入图片描述

实现这个过程是非常复杂的,但是通过 NineData 就可以轻松做到。
什么是 NineData?NineData 是玖章算术公司自主研发的云原生智能数据管理平台,是一个纯国产的软件。它提供的数据复制功能专门用于数据源之间的数据迁移与同步,针对本文的双向数据实时同步的需求,也提供了非常强大的支持。这里我们以 MySQL 为例,假设有 A、B、C 三个数据源,以数据源 A 为中心节点,分别创建 A 和 B、A 和 C 之间的双向复制任务,实现三个数据源的数据实时同步。
步骤一:录入所有节点的 MySQL 数据库并添加多活标记1. 登录 NineData 控制台,单击数据源管理>数据源,然后在页面中单击创建数据源,选择需要录入的数据源。2. 根据页面提示进行配置,然后单击创建数据源完成创建。3. 单击数据源 ID 进入数据源详情页面,单击展开,找到多活标记,配置多活标记名称。该步骤所有参与复制的数据源都需要执行,以防止发生数据循环复制。
在这里插入图片描述

步骤二:创建数据源 A、B、C 之间的双向复制任务1. 登录 NineData 控制台,单击数据复制>数据复制,然后单击创建复制。2. 根据页面提示配置复制任务,源数据源处选择数据源 A,目标数据源处选择数据源 B,然后在复制方式处选择双向复制。
在这里插入图片描述

  1. 配置完成后启动任务,然后再次创建一个新的复制任务,源数据源处依然选择数据源 A,目标数据源处选择数据源 C,然后同样在复制方式处选择双向复制。

  2. 在这里插入图片描述

  3. 根据页面提示完成配置后,在数据复制的任务列表中可以看到多了 2 条双向复制任务,当正反向任务的延迟为 0 的时候,代表数据源 A、B、C 之间的数据是一致的。

  4. 在这里插入图片描述

最后本方案作为示例展示了一中心两单元的同步架构,事实上,这个解决方案可以支持无限多个单元节点的实时同步,只需重复添加数据源 A 到数据源 N 即可实现。至此,你的异地多活架构已经全部配置完成,所有节点都可以提供业务读写,得益于实时的数据同步机制,任何一个节点发生故障时,其他节点均能够无缝接管中心节点的流量,由于所有单元节点本身就在处理业务,因此无需担心单元节点能否胜任,保证了系统的高可用性和持续性。

var first_sceen__time = (+new Date());
if (“” == 1 && document.getElementById(‘js_content’)) {
document.getElementById(‘js_content’).addEventListener(“selectstart”,function(e){ e.preventDefault(); });
}

数据库147数据复制30数据库 · 目录#数据库上一篇NineData云原生智能数据管理平台新功能发布|2024年9月版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字天下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值