实现MySQL异地多活场景

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: 现代化互联网企业面临的最大威胁是意外导致的数据丢失或不可用。为应对这一挑战,企业通常采用“主从高可用”架构,但单一机房内的高可用仍存风险。真正的高可用需通过“跨机房容灾”或“异地容灾”实现。异地容灾将服务器部署在不同地域的机房中,确保一处受灾时,其他机房能迅速接管业务。更进一步的“异地多活”方案则让各节点同步处理业务流量,确保数据一致性,提高资源利用率。NineData 提供了实现这一方案的强大工具。

作为现代化的互联网企业 ,最怕的是什么 ?是意外!由各种意外导致的数据库问题,磁盘问题、网络问题、人员误操作问题等等,这些问题都可能导致数据不可用或者丢失,造成重大损失


因此,很少会有企业采用「单机」数据库架构,尽管这个架构简单明了,却经不起任何的意外,所以大部分企业都会采用更加安全可靠的「主从高可用」架构。这种架构通常具备一个主库(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,然后在复制方式处选择双向复制



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



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



最后


本方案作为示例展示了一中心两单元的同步架构,事实上,这个解决方案可以支持无限多个单元节点的实时同步,只需重复添加数据源 A 到数据源 N 即可实现。


至此,你的异地多活架构已经全部配置完成,所有节点都可以提供业务读写,得益于实时的数据同步机制,任何一个节点发生故障时,其他节点均能够无缝接管中心节点的流量,由于所有单元节点本身就在处理业务,因此无需担心单元节点能否胜任,保证了系统的高可用性和持续性。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
安全 关系型数据库 MySQL
MySQL数据库高效秘籍:10个小技巧,让你轻松应对各种场景!
【8月更文挑战第25天】本文介绍了十个提升MySQL数据库效率与安全性的实用技巧。涵盖查询性能分析、索引优化、慢查询日志利用、图形化工具如MySQL Workbench的应用、性能分析工具、主从复制实现、备份与恢复策略、数据库迁移方法及安全性保障等多个方面。通过具体的示例代码展示每个技巧的实际操作方式,帮助读者深入理解并有效运用MySQL数据库。
654 0
|
存储 SQL 关系型数据库
MySQL - 深入理解锁机制和实战场景
MySQL - 深入理解锁机制和实战场景
458 0
|
存储 SQL 关系型数据库
系统设计场景题—MySQL使用InnoDB,通过二级索引查第K大的数,时间复杂度是多少?
系统设计场景题—MySQL使用InnoDB,通过二级索引查第K大的数,时间复杂度是多少?
207 1
系统设计场景题—MySQL使用InnoDB,通过二级索引查第K大的数,时间复杂度是多少?
|
8月前
|
关系型数据库 MySQL 分布式数据库
Super MySQL|揭秘PolarDB全异步执行架构,高并发场景性能利器
阿里云瑶池旗下的云原生数据库PolarDB MySQL版设计了基于协程的全异步执行架构,实现鉴权、事务提交、锁等待等核心逻辑的异步化执行,这是业界首个真正意义上实现全异步执行架构的MySQL数据库产品,显著提升了PolarDB MySQL的高并发处理能力,其中通用写入性能提升超过70%,长尾延迟降低60%以上。
|
存储 关系型数据库 MySQL
MySQL在企业内部应用场景有哪些
【10月更文挑战第17天】MySQL在企业内部应用场景有哪些
617 0
|
存储 关系型数据库 MySQL
介绍一下MySQL的一些应用场景
【10月更文挑战第17天】介绍一下MySQL的一些应用场景
3042 0
|
存储 SQL 关系型数据库
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
2030 15
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
|
SQL 关系型数据库 MySQL
(八)MySQL锁机制:高并发场景下该如何保证数据读写的安全性?
锁!这个词汇在编程中出现的次数尤为频繁,几乎主流的编程语言都会具备完善的锁机制,在数据库中也并不例外,为什么呢?这里牵扯到一个关键词:高并发,由于现在的计算机领域几乎都是多核机器,因此再编写单线程的应用自然无法将机器性能发挥到最大,想要让程序的并发性越高,多线程技术自然就呼之欲出,多线程技术一方面能充分压榨CPU资源,另一方面也能提升程序的并发支持性。
1278 3
|
SQL 关系型数据库 MySQL
(十六)MySQL调优篇:单机数据库如何在高并发场景下健步如飞?
在当前的IT开发行业中,系统访问量日涨、并发暴增、线上瓶颈等各种性能问题纷涌而至,性能优化成为了现时代中一个炙手可热的名词,无论是在开发、面试过程中,性能优化都是一个常谈常新的话题。而MySQL作为整个系统的后方大本营,由于是基于磁盘的原因,性能瓶颈往往也会随着流量增大而凸显出来。
1765 0
|
人工智能 关系型数据库 MySQL
探索和体验云原生数据库PolarDB MySQL版在AI场景中的应用
探索和体验云原生数据库PolarDB MySQL版在AI场景中的应用
421 0

相关产品

  • 云数据库 RDS MySQL 版
  • 推荐镜像

    更多