MYSQL常见应用架构经验分享|学习笔记

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 快速学习MYSQL常见应用架构经验分享

开发者学堂课程【MySQL企业常见架构与调优经验分享:MYSQL常见应用架构经验分享】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/383/detail/4814


MYSQL常见应用架构经验分享


内容简介

一、 MYSQL 常见的应用架构分享

1、主从复制解决方案

2、MMM/MHA 高可用解决方案



一、MYSQL 常见的应用架构分享  

1、主从复制解决方案

1.png

主从复制其实是 MySQL 主库会产生二进的文件,那么从库呢,他其实是把二进的文件拉到从库去,然后通过解析,把二进的文件解析成 SQL 语句,然后在从库在执行一遍这个 SQL 操作。

这个方法就保证主库和从库是一致的。这是最原始的一种主从复制方式。

最简单的给 MySQL 做备份的方法就是通过主从的方式,对 MySQL 做备份方式有很多种,首先如果我们 MySQL 数据不是很大的话,比如几百兆几个 G 的话,对数据要求不是很高的话,那我觉得最简单的方式是通过一个 Keepalived 做一个备份,因为数据不是很大,那么主从复制这个场景他一般情况下是这个数据库它的数据量非常非常大,并且每天增量也非常高,啊,比如说几 T 几 T 的这么一个数据,那么每天通过做全备的话,那其实是不现实的,并且每天增长,比如说几十 G 上百 G 对吧。

那么这种情况通过去做一个增量备份,或者说如果全备的话,效率是非常非常低的。

那么这种情况下,这个主从复制他这个就显得就比较好了。他的这种主动复制方式可以实时的就是把数据从这个主库然后拉到从库上去。这样其实也就实现了主库数据一个实时备份,那么当主库故障的时候,我们直接把数据切到从库就可以去用了。

当然随着就说我们对这个架构的这个调整,然后对这个 MySQL ,对这个数据库这个实质性,包括他的一些安全性要求的一个进一步的提升,那么简单的主动复制,在满足备份的情况下,它还可以,但是如果说我们要实现一些自动,更高级更自动的功能,比如说在这个主从僵局之后,对我们业务要自动的切到从上去,不需要人为揭露的情况下,这个主从复制往往就实现不了了。

那么针对这种情况,相关的这个业界人又提供了很多种方法,那么最常见的就是,我们在这个实际环境当中,通过主从复制技术,然后配合这个高可用的一个集训软件就是 keepalived ,去实现这个 failover 那么就说就说通过这个 keepalived ,去保证我们这个业务的连续性,当主库到了之后,我们不用去做这种 IP 的切换操作,那么随着业务全这个切到存货上去啊,去实现这么一个操作,具体实现过程如上图,DB1 和 DB2 互为主从的关系, DB1 既是主库,又是从库,同理, DB2 也是一样。

如何维护这种关系呢?

通过 keepalived 实现决策的切换。

如图 DB1 主要是一个读写操作, DB2 负责拉日志,同步操作,当 DB1 出现问题之后,本身 keepalived 会出现检测机制,检测出 DB1 上主从同步失效之后,它就会自动做切换。

当 DB1 出现故障之后,首先有 keepalived ,他有一个检测胶板,会检测到 DB1 他的故障,比如说同步出现故障了,或说网络出现故障了,或说数据库,当他检测出来之后,它会自动把 VIP 从 DB1 飘到 DB2 ,首先是一个 VIP 的漂移操作。

飘过来之后,我们前端程序连的数据库就是 keepalived 它的一个 VIP 地址。那么这会飘到 DB2 之后呢,我们前端程序就不用做改动,因为我们 VIP 程序不管是在 DB1 还是 DB2 他都是一样的·,只不过同一时刻只在一台机器上。

这是迁到 DB2 之后的,那么接下来 DB2 他要完成的工作就是把所有程序在 DB2 进行读写操作。

那么现在 DB1 是故障的,我们就可以腾出时间对 DB1 进行修复,那么修复完成之后,我们可以把 DB1 的数据和 DB2 的数据做一个反向同步,也就说,把这个故障这段时间的数据从这个 DB2 上在同步到 DB1 上,同步完之后我们可以把这个整个的角色切换到原生状态下。也可以这个角色局域型就可以了。

也可以说,这个结构是通过 keepalived 实现了这个的角色的转换。并且还实现了 DB1 和 DB2 他们的服务的监测。那么这个方案的他们就是常说的 MYSQL 主主复制技术,说是主主复制技术,他不完全正确,其实在同一时间也只有一个主库在运行。

这是 MySQL 自身提供的一种高可用解决方案,数据同步方法采用的是 MySQL replication 技术。

MySQL replication 就是从服务器到主服务器拉取二进例日志文件,然后再将日志文件解析成相应的 SQL 在从服务器上重新执行一遍主服务器的操作,通过这种方式保证数据的一致性。

为了达到更高的可用性,在实际的应用环境中,一般都是采用 MySQL replication 技术配合高可用集群软件keepalived 来实现自动 failover ,这种方式可以实现 95.000% 的 SLA。

它的实现方式比较简单,企业应用也比较灵活,但这个方式呢,它的 SLA 级别是非常低的。它的性能和安全性方面也都不是最好的。当然它的这个方案也是最廉价的,最成熟的。

  1. MMM/MHA 高可用解决方案

这个套件其实最早是有一个日本的搞技术的提供了解决方案。这个解决方案其实是根据 PAO 语言去编写的。这个方案现在其实已经集成到默认版本里面去了。

那么可以通过 yum 直接去安装 MMM ,就直接可以安装上去。要装的话就是 yumest MySQL/MMM ,他就直接把这个套件给安装了。因为这个套件确实是一个比较成熟稳定的技术,在企业里边应用也是非常多的。

MMM 提供了 MySQL 主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件。

在 MMM 高可用方案中,典型的应用是双主多从架构,通过 MySQL replication 技术可以实现两个服务器互为主从,且在任何时候只有一个节点可以被写入,避免了多点写入的数据冲突。同时,当可写的主节点故障时,MMM 套件可以立刻监控到,然后将服务自动切换到另一个主节点,继续提供服务,从而实现 MySQL 的高可用。

2.png

首先前端是有一个应用程序 Application ,那么正常情况下,这个应用程序会在 Master1 级进行一个可读可写的这么一个操作。

那么这个 Master1 和 Master2 也是互为主从关系的,那么通过这点的话,和刚才我们看到的 keepalived 加 MySQL 主从是一样的。但是也有不一样的,不一样的是 Master2 他提供了一个读的操作,这个架构在我们刚才上面 DB2 它仅仅是做一个同步 DB1 的数据,他没有做一个可读的功能。

那么在这个 MMM 这个里面 Master2 他在做一个从的 MySQL 的时候,还可以提供一个读的服务。这个是他的一个优势。

那么这个 Master1 和 Master2 也是互为完全主从的,那么他的数据同步的方式也是通过主从复制来实现的。

所以 MMM 的核心也是通过主从复制架构来实现的,重点我们看最后一部分,在 MMM 套件里面,他有一个监控模块 Monitor ,这个监控模块怎么监控呢?

先监控 Master1 和 Master2 的状态,比如说他现在监控到 Master1 他这个同步出现故障,那么他要做的操作就是把这个 Master1 给隔离出去。

那么同时它会把这个地址,可读可写的地址,就是 VIP 地址迁到 Master2 去,那么 Master2 现在充当着 Master1 的角色,就是可以实现可读可写,那么现在就是 Master2 可读可写了,那么同理如果说这个监控这个模块发现 Master2 出现故障,它就会把 Master2 这个可读链表里面剔除出去,也就是不让 Master2 去提供服务了。那么这块呢,完全是有这个监控进程来完成。

还有一些 VIP 的切换也是有这个 Monitor 这么一个进程来完成,这仅仅是它的一部分功能,最主要的功能是什么,就是如果说我们这个 Master1 出现故障,他能做的一个点,它会记录这个 Master1 和 Master2 之间他们同步到了那个点,那么如果说 Master2 他现在变成主之后,它就会把之前没有同步过的记录关系,做一个重记录过程。这个点是 MMM 套件非常好的地方。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
16天前
|
机器学习/深度学习 API 语音技术
|
23天前
|
SQL 关系型数据库 MySQL
轻松入门MySQL:保障数据完整性,MySQL事务在进销存管理系统中的应用(12)
轻松入门MySQL:保障数据完整性,MySQL事务在进销存管理系统中的应用(12)
|
1天前
|
JSON API 数据库
后端架构设计与优化:打造高性能应用后端
后端架构设计与优化:打造高性能应用后端
10 2
|
8天前
|
Java 关系型数据库 MySQL
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。一套UWB精确定位系统,最高定位精度可达10cm,具有高精度,高动态,高容量,低功耗的应用。
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
|
10天前
|
人工智能 Serverless 数据处理
利用阿里云函数计算实现 Serverless 架构的应用
阿里云函数计算是事件驱动的Serverless服务,免服务器管理,自动扩展资源。它降低了基础设施成本,提高了开发效率,支持Web应用、数据处理、AI和定时任务等多种场景。通过实例展示了如何用Python实现图片压缩应用,通过OSS触发函数自动执行。阿里云函数计算在云计算时代助力企业实现快速迭代和高效运营。
46 0
|
14天前
|
运维 监控 自动驾驶
构建可扩展的应用程序:Apollo与微服务架构的完美结合
构建可扩展的应用程序:Apollo与微服务架构的完美结合
32 10
|
16天前
|
机器学习/深度学习 PyTorch API
|
16天前
|
机器学习/深度学习 语音技术 算法框架/工具
|
17天前
|
运维 Cloud Native 持续交付
构建未来:云原生架构在现代企业中的应用与挑战
【4月更文挑战第10天】 随着数字化转型的不断深入,企业对信息技术基础设施的要求日益提高。云原生架构作为一种新兴的设计理念和技术集合,以其灵活性、可扩展性和容错性,正在成为推动企业技术革新的关键力量。本文将探讨云原生技术的核心组件、实施策略以及面临的主要挑战,并分析如何通过采纳云原生架构来优化业务流程和提升服务效率。
|
26天前
|
移动开发 前端开发 数据管理
构建高效Android应用:采用MVVM架构与LiveData的全面指南
在移动开发领域,构建一个既快速又可靠的应用对于开发者来说至关重要。随着Android Jetpack组件的推出,MVVM(Model-View-ViewModel)架构和LiveData已成为实现响应式、可测试且易于维护应用的首选解决方案。本文将深入探讨如何在Android应用中实施MVVM模式,以及如何利用LiveData来优化UI组件的数据更新流程,确保用户界面与业务逻辑之间的高度解耦和流畅交互。
18 4