想学精MySQL,得先捋一捋高可用架构

bash 复制代码
作者:IT邦德
中国DBA联盟(ACDU)成员,10余年DBA工作经验
擅长主流数据Oracle、MySQL、PG、openGauss运维
备份恢复,安装迁移,性能优化、故障应急处理等

可提供技术业务:
1.DB故障处理/疑难杂症远程支援
2.Mysql/PG/Oracle/openGauss
数据库部署及数仓搭建

公众号:IT邦德
•••

@TOC

前言

本文对MySQL的高可用架构做了详细的阐述,均来自真实的企业生产环境


1.主从复制

MySQL主从复制是一个异步的复制过程,底层是基于Mysql数据库自带的 二进制日志 功能。就是一台或多台MySQL数据库(slave,即从库)从另一台MySQL数据库(master,即主库)进行日志的复制,然后再解析日志并应用到自身,最终实现 从库的数据和主库的数据保持一致。MySQL主从复制是MySQL数据库自带功能,无需借助第三方工具。

scss 复制代码
MySQL 主从复制的优点主要包括以下3个方面:
(1)如果主库出现问题,可以快速切换到从库提供服务;
(2)可以在从库上执行查询操作,降低主库的访问压力;
(3)可以在从库上执行备份,以避免备份期间影响主库的服务

2.读写分离及负载均衡

MySQL Router 的主要用途是读写分离,主主故障自动切换,负载均衡,连接池等。 MySQL 强烈建议使用 Router 8 与 MySQL Server8和5.7一起使用,MySQL Router 是 MySQL 官方提供的一个轻量级中间件,可以在应用程序与 MySQL 服务器之间提供透明的路由方式。主要用以解决 MySQL 主从库集群的高可用、负载均衡、易扩展等问题

复制代码
1.实现了主从读写分离
2.读从库一定程度上起到了负载均衡的作用
3.可以当作连接池
4.主主架构中,主数据库发生故障后,主从 MySQL 服务器自动发生切换
5.多从服务器负载读时,其中一台从服务器 DOWN 机,不影响业务访问

3.MHA架构

MHA(Master High Availability Manager and tools for MySQL)目前在MySQL高可用方面是一个相对成熟的解决方案,它是由youshimaton采用Perl语言编写的一个脚本管理工具。目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群必须最少有3台数据库服务器,一主二从,即一台充当Master,一台充当备用Master,另一台充当从库。

复制代码
MHA由两部分组成:MHA Manager(管理节点)和MHA Node(数据库节点),
MHA Manager 可以单独部署在一台独立的机器上管理多个 master-slave 集群,
也可以部署在一台 slave 节点上。MHA Node 运行在每台 MySQL 服务器上,
MHA Manager 会定时探测集群中的 master 节点,
当 master 出现故障时,它可以自动将最新数据的 slave 提升为新的 master,
然后将所有其他的 slave 重新指向新的 master。
整个故障转移过程对应用程序完全透明

4.多源复制

所谓多源复制(Multi-source Replication),就是多台主库的数据同步到一台从库服务器上,从库创建通往每个主库的管道,从Mysql5.7版本开始支持多主一从的复制方式

markdown 复制代码
                                                                         
多源复制的应用场景
1.各个主数据库的数据汇总到统一的数据库中
2.在从数据库对各个主数据库的数据进行集中备份
                                                                         
在部署多主一从之前,我们先了解下多源复制的好处:
(1)可以集中备份,在从库上备份,不会影响线上的数据正常运行;
(2)节约购买从库服务器的成本,只需要一个从库服务器即可;
(3)数据汇总在一起,方便后期做数据统计,可用于数仓;
(4)减轻DBA维护工作量,整合数据资源;

5.MGR架构

MySQL Group Replication(简称MGR)是一款高可用与高扩展的解决方案, 它提供了高可用、高扩展、高可靠的MySQL集群服务。既可以很好的保证数据一致性又可以自动切换,具备故障检查功能、支持多节点写入,以插件形式提供,实现了分布式下数据的最终一致性

scss 复制代码
(1)强一致性
基于原生复制及paxos协议的组复制技术,
并以插件方式提供,提供一致性数据安全。
(2)高容错性
只要不是大多数节点环境坏掉就可以继续工作,
有自动检查机制,当不同节点产生资源争用冲突时,
不会出现错误,按照先到者优先原则进行处理,并内置自动化脑裂防护机制。
(3)高扩展性
节点的新增和移除都是自动的,新节点加入后,
会自动从其他节点上同步状态,直到新节点和其他节点保持一致,
如果某节点被移除了,其他节点自动更新组信息,自动维护新的组信息。
(4)高灵活性
有单主模式和多主模式,单主模式下会自动选主,
所有的更新操作都是在主上进行;多主模式下,所有server都可以同时处理更新操作。

6.双主+Keepalived

一般中小型公司都使用这种架构,搭建比较方便简单;可以采用主从或者主主模式,在 master 节点发生故障后,利用keepalived 高可用机制实现快速切换到 slave 节点。原来的从库变成新的主库

sql 复制代码
keepalived主要有三个模块,分别是core、check和vrrp。
core模块为keepalived的核心,
负责主进程的启动、维护以及全局配置文件的加载和解析。
check负责健康检查,包括常见的各种检查方式。
vrrp模块是来实现VRRP协议的

7.PXC架构

PXC 是一套 MySQL 高可用集群解决方案,与传统的基于主从复制模式的集群架构相比 PXC 最突出特点就是解决了诟病已久的数据复制延迟问题,基本上可以达到实时同步

复制代码
①实现 mysql 数据库集群架构的高可用性和数据的强一致性。
②完成了真正的多节点读写的集群方案。
③改善了传统意义上的主从复制延迟问题,基本上达到了实时同步。
④新加入的节点可以自动部署,无须提供手动备份,维护起来很方便。
⑤由于是多节点写入,所以数据库故障切换很容易。

8. Orchestrator+VIP架构

Orchestrator是最近非常流行的MySQL复制管理工具,相比较于MHA等常用管理工具,其支持高可用部署,并对故障进行一个完整的探测分析后才会做相应的故障转移,探测更精准、全面

bash 复制代码
下图中:Sqlite/MySQL,是Orchestrator的后端存储数据库
(存储监控的mysql复制实例的相关状态信息),可以选择MySQL,也可以选择SQLite。

/etc/orchestrator.conf.json是配置文件,Orchestrator启动时读取。
下面部分是监控的MySQL的实例,以下是搭建的一主两从。
当然,实际上Orchestrator可以监控成百上千个MySQL复制集群
相关推荐
光影少年5 小时前
Promise状态和方法都有哪些,以及实现原理
javascript·promise·掘金·金石计划
光影少年5 小时前
next.js和nuxt与普通csr区别
nuxt.js·掘金·金石计划·next.js
光影少年5 小时前
js异步解决方案以及实现原理
前端·javascript·掘金·金石计划
光影少年4 天前
前端上传切片优化以及实现
前端·javascript·掘金·金石计划
ZTStory7 天前
JS 处理生僻字字符 sm4 加密后 Java 解密字符乱码问题
javascript·掘金·金石计划
光影少年7 天前
webpack打包优化都有哪些
前端·webpack·掘金·金石计划
冯志浩8 天前
Harmony Next - 手势的使用(二)
harmonyos·掘金·金石计划
冯志浩9 天前
Harmony Next - 手势的使用(一)
harmonyos·掘金·金石计划
光影少年10 天前
react虚拟列表实现及原理
前端·react.js·掘金·金石计划
光影少年10 天前
react性能优化有哪些
前端·react.js·掘金·金石计划