实现MySQL异地多活场景

news2024/10/11 10:48:50

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2204700.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【吊打面试官系列-微服务面试题】微服务架构有哪些优势?

大家好,我是锋哥。今天分享关于【微服务架构有哪些优势?】面试题,希望对大家有帮助; 微服务架构有哪些优势? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 微服务架构是一种软件架构风格,将单…

“Flash 闪存”基础知识及 “SD NAND Flash”产品测试指南

目录 “Flash 闪存”基础知识及 “SD NAND Flash”产品测试指南一、“FLASH闪存”是什么?1. 简介2. 分类3. 特点4. 虚拟化 二、SD NAND Flash1. 概述2. 特点3. 引脚分配4. 数据传输模式5. SD NAND寄存器6. 通电图7. 参考设计 三、STM32测试例程1. STM32F103读写代码…

CorelDRAW中绘制居民地街道区道路网的绘制

居民地街区道路网的绘制 1.打开软件,点击【文件】→【新建】,建立实验。并导入底图,结果如图1所示: 图1 2.点击【手绘工具】,利用贝塞尔曲线绘制主干道,结果如下图2所示 图2 3.点击【手绘工具】&#xf…

【北京迅为】《STM32MP157开发板嵌入式开发指南》- 第二十七章 交叉编译器的安装和使用

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐…

前后端分离开发YApid

开头先声明以下,这篇主要用于概念的介绍…… 在当今的互联网应用开发中,前后端分离逐渐成为主流的开发模式。相比于传统的前后端混合开发,这种新模式在灵活性、可维护性和团队协作等方面具有显著优势。 前后端混合开发 在前后端混合开发模式…

浏览器内置文字转语音,播报功能Web Speech API - SpeechSynthesisUtterance

SpeechSynthesisUtterance: 让网页说话的艺术 在现代Web开发中,让网页具有语音功能可以极大提升用户体验,特别是对于视障用户或需要多任务处理的场景。SpeechSynthesisUtterance 是 Web Speech API 中的一个接口,它允许开发者创建一个语音合…

初学java练习题【1】

import java.util.Scanner;public class HelloWorld{public static void main(String[] args){Scanner scannernew Scanner(System.in);//输入工资System.out.println("请输入您的工资:");double d1scanner.nextDouble();System.out.println("请输入…

Word 批注如何添加及删除?只需这样就行

在使用 Word 编写文档之后我们可能会将其发送给其他伙伴查看,当其看见文档中有错误的时候可能需要加以标记,这样你才能知道哪里有错误。Word 批注功能就是这样的一种工具,它允许用户在文档中标记特定文字或段落,并添加相关评论或建…

【论文阅读】Semi-Supervised Few-shot Learning via Multi-Factor Clustering

通过多因素聚类的半监督小样本学习 引用:Ling J, Liao L, Yang M, et al. Semi-supervised few-shot learning via multi-factor clustering[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2022: 14564-14573. 论文地址…

微软已解决Word自动删除文件问题 重启或使用命令行可修复

早前作为办公软件主力产品的 Microsoft Word 出现某个错误,该错误会导致用户在保存文件后或者关闭 Word 时自动删除文件,好在文件只是被移动到回收站中而不是永久删除。 该问题主要影响以下行为: 文件名中包含 # 号 文件后缀为全大写的.DOC…

应对网络安全挑战:App等保测评的重要性与策略

在全球数字化转型的大潮中,移动应用(App)作为连接人们日常生活与互联网世界的桥梁,其数量与日俱增,功能日趋多样化。与此同时,App背后潜藏的网络安全风险也随之上升,数据泄露、隐私侵犯、恶意软件植入等问题频发&#…

访问控制列表(课内实验)

实验2:访问控制列表 实验目的及要求: 通过实验,进一步的理解标准ACL与扩展ACL的工作原理及执行过程。理解通配符的概念,熟练掌握标准ACL与扩展ACL的配置指令,掌握将访问控制列表应用VTY线路上,并且能够判断…

C++网络编程之套接字基础

概述 在网络编程中,套接字(Socket)是一种用于进程间通信的接口。套接字是操作系统提供的一种抽象层,它允许不同计算机之间的进程通过网络进行通信。套接字实际上并不神秘,简单来说,套接字是连接网络中不同主…

【射频通信电子线路第七讲】射频收发信机结构及具体的实例应用

一、射频收发器 (一)功能与需求 (1)频率变换:调制解调、混频、不同于信息变换 电平变换:放大、衰减 干扰抑制:滤波、抵消 (2)发射出的信号:高频、一定功…

【动态规划】状态 dp

动态规划步骤: 状态表示。所谓状态表示就是 dp 表里的值表示什么含义,那么状态表示怎么找呢? a. 题目要求 b. 经验(以某一个位置为结尾 / 起点) 题目要求 c. 分析问题的过程中发现重复子问题状态转移方程。dp[ i ] 等…

<Project-8.1 pdf2tx-MM> Python Flask 用浏览器翻译PDF内容 2个翻译引擎 繁简中文结果 从P8更改

更新 Project Name:pdf2tx (P6) Date: 5oct.24 Function: 在浏览器中翻译PDF文件 Code:https://blog.csdn.net/davenian/article/details/142723144 升级 Project Name: pdf2tx-mm (P8) 7oct.24 加入多线程,分页OCR识别,提高性能与速度 使…

美发店管理革新:SpringBoot系统的应用

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理美发门店管理系统的相关信息成为必然。开发…

3D生成基础模型来了!只需5秒,高质量3D资产规模化生成!南洋理工等重磅开源3DTopia-XL

文章链接:https://arxiv.org/pdf/2409.12957 项目链接:https://3dtopia.github.io/3DTopia-XL/ 今天AI生成未来和大家分享的是南洋理工、北大、上海AI Lab和港中文联合发布的3D PBR资产生成最新工作3DTopia-XL。通过基于高效且表达力强的3D表示方法Pri…

Vue3 集成Monaco Editor编辑器

Vue3 集成Monaco Editor编辑器 1. 安装依赖2. 使用3. 效果 Monaco Editor (官方链接 https://microsoft.github.io/monaco-editor/)是一个由微软开发的功能强大的在线代码编辑器,被广泛应用于各种 Web 开发场景中。以下是对 Monaco Editor 的…

【linux 多进程并发】0201 Linux进程fork内存空间,父子进程变量内存地址居然是一样的

0201 Linux进程fork方式详解 ​专栏内容: postgresql使用入门基础手写数据库toadb并发编程 个人主页:我的主页 管理社区:开源数据库 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 文章…