当前位置: 首页 > news >正文

MySQL InnoDB Cluster介绍,MHA、PXC、InnoDB Cluster怎么选?一文讲透MySQL高可用方案最佳实践

MySQL InnoDB Cluster (MySQL MIC) 概述

“MySQL MIC” 不是一个官方标准术语,但通常指代 MySQL InnoDB Cluster

MySQL InnoDB Cluster(MIC)架构的正式集成和支持是从 MySQL 8.0 版本开始的,但它的核心组件在更早的版本中已有雏形或实验性支持。

描述点是否正确补充说明
“MySQL MIC”非官方术语官方术语是 MySQL InnoDB Cluster,简称 MIC 是社区或厂商非正式用法,不冲突。
正式支持从 MySQL 8.0 开始虽然 Group Replication 在 5.7 就有实验性支持,但 InnoDB Cluster 是 8.0 才正式集成并推荐生产使用
三组件架构:MGR + Shell + Router这是官方标准组合,缺一不可。
Group Replication 基于 Paxos使用 XCom(Paxos 变种)实现分布式一致性。
支持单主/多主模式默认是 单主模式,多主模式需谨慎使用,存在冲突检测开销。
Router 自动感知主从切换Router 会缓存拓扑信息,主节点变更后自动刷新连接目标
高一致性(强一致)使用 同步复制 + quorum 机制,事务提交需大多数节点确认。
易用性:Shell 一键部署dba.createCluster() 等命令确实极大简化了部署。

这是一个由 MySQL 官方提供的完整、高可用(High Availability, HA)数据库解决方案架构。它的核心目标是轻松部署和管理一套具备自动故障切换(Failover)能力的 MySQL 集群。

1. 核心架构(三组件集成)

MySQL InnoDB Cluster 不是一个单一软件,而是由三个关键技术组件集成的完整体系。架构核心可概括为“一个管理中心,多个数据节点”。

以下是其部署结构和数据流向示意图:

项目建议补充
MySQL Shell 版本要求必须使用 MySQL Shell 8.0+ 才能完整支持 InnoDB Cluster 功能。
Router 缓存机制Router 并非实时感知拓扑变更,而是周期性从 metadata 库读取,默认间隔为 0.5~1秒,因此故障切换后可能有短暂连接失败(<1s)。
多主模式限制多主模式下,同一事务不能跨节点修改同一行,否则会触发冲突检测回滚,不适合高并发写入场景。
仲裁节点(Quorum)如果集群节点数为偶数,建议引入 MySQL Shell 的“仲裁实例”(非数据节点)来避免脑裂。
与 MySQL NDB Cluster 区别有人误以为 InnoDB Cluster 是 NDB 的替代品,实则完全不同:
- NDB:分布式存储引擎,真正的共享 nothing 架构,支持分片。
- InnoDB Cluster:基于 InnoDB 引擎 + Group Replication,非分片架构,适合中等规模集群(通常 <10 节点)。

2. 核心组件与职责

2.1 SQL Group Replication (MGR) - 数据同步核心

  • 是什么: 内置在 MySQL Server 中的插件,提供了基于 Paxos 协议的分布式状态机复制机制。
  • 职责: 负责在多个 MySQL 节点之间自动同步数据,保证集群的强一致性。它支持真正的“多主”架构(所有节点可写)或“单主”架构(默认模式,只有一个主节点可写,其他为只读副本)。
  • 特点: 数据同步是内置的、原生的,无需外部工具(如传统的主从复制)。

2.2 MySQL Shell-部署与管理工具

  • 是什么: 一个高级的客户端和代码编辑器,支持 SQL、Python 和 JavaScript。
  • 职责: 作为创建和管理的命令行工具。通过内置的 dba 模块,使用简单命令(如 dba.createCluster(), cluster.addInstance())就能快速搭建和管理 InnoDB Cluster,避免手动配置 Group Replication。
  • 特点: 极大简化集群部署和运维复杂度。

2.3 MySQL Router-应用访问中间件

  • 是什么: 一个轻量级的中间件(应用程序和数据库集群之间的代理)。
  • 职责: 对应用程序透明地路由请求。应用程序无需知道主节点或从节点的位置。它自动:

将写请求发送到可写的主节点。
将读请求负载均衡到多个只读副本节点。
在故障切换后,自动感知新主节点并重定向请求。

  • 特点: 实现高可用架构中的“透明故障转移”。

3. 核心特征与优势

3.1 高可用性 (High Availability)

在默认的单主模式下,主节点故障时,集群自动选举新主节点(通常在1分钟内完成)。
MySQL Router 自动重定向应用连接,业务中断时间极短。

3.2 高一致性 (High Consistency)

基于 Group Replication,事务只能在被大多数节点(quorum)接收并复制后,才会在主节点提交。
确保集群内数据强一致,避免传统异步复制的数据丢失风险。

3.3 可扩展性 (Scalability)

通过 MySQL Shell 轻松添加只读节点,横向扩展读处理能力。
MySQL Router 自动分发读请求到新节点。

3.4 自动化与易用性

MySQL Shell 和 MySQL Router 简化了部署、配置和日常管理(如添加节点、故障切换)。

4.常见工作模式

4.1 单主模式 (Single-Primary Mode)

  • 描述: 默认且最常用模式。只有一个节点(Primary)可读写,其他节点为只读副本(Replicas)。
  • 特点: 支持自动故障切换,适用于大多数场景。

4.2 多主模式 (Multi-Primary Mode)

  • 描述: 所有节点都可读写。
  • 特点: 适用于极端场景(如多地写入),但因复杂性和潜在事务冲突,一般不做推荐。

5.MySQL InnoDB Cluster 替代方案对比

建议用浏览器打开阅读

维度MySQL InnoDB Cluster (MGR+Shell+Router)MHA(Master High Availability)Galera Cluster(PXC/MariaDB Cluster)VMware 层高可用(vSphere HA+vSAN)
高可用粒度MySQL 层自动选主、切换MySQL 层脚本式切主MySQL 层真多主同步OS/虚机层重启虚机,MySQL 无感知
数据一致性强一致(quorum + Paxos)异步复制,可能丢数据(<1s)真同步(certification),冲突回滚依赖存储复制,非数据库层一致
故障切换时间通常 10~30s(Router 缓存+选主)30~60s(SSH 脚本+VIP 漂移)无切换(多主读写),单节点故障仅剔除几分钟(VM 重启+FSCK)
读写扩展性单主写多读(Router 负载均衡)单主写多读(手动只读)真多主写(冲突检测)单主写无法横向扩展
网络要求低延迟(<10ms,防脑裂)无特殊要求(异步)高要求(RTT<5ms,防流控)仅存储层需低延迟
版本/许可MySQL 8.0+ 社区版即可,无额外费用开源(Perl 脚本),但已停止更新Percona/MariaDB 开源,CopyleftvSphere Enterprise Plus + vSAN 授权,成本高
运维复杂度一条命令搭建(Shell 8.0)手工配置 SSH、VIP、BINLOG配置wsrep 参数、流控、冲突审计仅负责 VM 重启,DB 层仍需手动修复
典型场景新建 MySQL 8 集群、国产化、轻量私有云旧系统 5.7 短期过渡多地写入、对延迟极敏感已有 VMware 投资,不愿改应用
最大痛点多主模式限制多;Router 有亚秒级延迟已停止维护;异步丢数据写入节点>3 时性能衰减明显;冲突回滚仅解决“服务器宕机”数据损坏/误删无解

文章转载自:

http://piZ1ysDm.ncxnw.cn
http://I6hf7kFD.ncxnw.cn
http://vKQn5yvW.ncxnw.cn
http://4HAFe6iF.ncxnw.cn
http://0ITxAggT.ncxnw.cn
http://Fv02ZDay.ncxnw.cn
http://1fDAiC1X.ncxnw.cn
http://ccyTbuMx.ncxnw.cn
http://4Jm6J3MC.ncxnw.cn
http://i4GID7FG.ncxnw.cn
http://8lZHcpHj.ncxnw.cn
http://6qRb0jP6.ncxnw.cn
http://bmuhraD2.ncxnw.cn
http://lpHKtjyY.ncxnw.cn
http://jhh1sH4f.ncxnw.cn
http://2wR5ACI1.ncxnw.cn
http://jvr9jvIe.ncxnw.cn
http://CHEQ6BGh.ncxnw.cn
http://jFt5QaWG.ncxnw.cn
http://pxNOCjnh.ncxnw.cn
http://cAuzvvGl.ncxnw.cn
http://uuqIa4eA.ncxnw.cn
http://PC5eEGh3.ncxnw.cn
http://JAJ7GZqi.ncxnw.cn
http://ju3yvhfn.ncxnw.cn
http://gR6zTavz.ncxnw.cn
http://zKfNk1Nl.ncxnw.cn
http://rYDPE69I.ncxnw.cn
http://Zw9Q4yXp.ncxnw.cn
http://PznU4Hk3.ncxnw.cn
http://www.dtcms.com/a/375971.html

相关文章:

  • Miniconda3搭建Selenium的python虚拟环境全攻略
  • 01背包,完全背包,分组背包,多重背包例题
  • Ansible之playbook
  • MapReduce :Map阶段分区后,数据怎么找到Reducer?
  • 项目研发实录:电子称SDK封装dll给到QT和C#调用
  • 短视频矩阵源码-视频剪辑+AI智能体开发接入技术分享
  • 代码随想录算法训练营第三十五天|背包问题 二维 背包问题 一维 46. 携带研究材料 416. 分割等和子集
  • FTP文件传输服务
  • 代码随想录第七天|● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 18.四数之和
  • SAP R/3系统模块结构
  • leetcode 217 存在重复元素
  • 前端 Word 模板参入特定数据 并且下载
  • LeetCode 003. 无重复字符的最长子串 - 滑动窗口与哈希表详解
  • 深度学习(五):过拟合、欠拟合与代价函数
  • 【JS】import.meta.env,process.env,window三种环境变量获取方式的区别
  • 交付只是起点:从“纸上蓝图”到“价值闭环”的保障实践,数字孪生保障落地的“三重防护网
  • LLM大模型-大模型 API 集成使用、部署本地大模型(huggingface、modelscope)、实现Qwen和Deepseek本地部署
  • Redis的入门与应用
  • pybind11错误书
  • 在 PostgreSQL中查看有哪些用户和用户权限
  • ctfshow- web入门-XXE漏洞
  • 六级第二关———坐地铁(1)
  • 实用 html 小工具
  • C#(链表创建与原地反转)
  • 光伏MPPT——拓扑结构及发波方式
  • Flink通讯超时问题深度解析:Akka AskTimeoutException解决方案
  • 美团核销接口助力第三方供应商拓展市场份额的策略
  • 基于dijkstra算法的WSN网络MAC协议matlab仿真,分析网络延迟与网络开销
  • 《Linux运维工程师基础技能测试简答题》
  • CPUID