系列导读本篇将深入讲解 MySQL 高可用架构的设计方案与最佳实践。文章目录一、高可用概述1.1 高可用指标1.2 高可用架构对比二、主从复制2.1 复制原理2.2 配置步骤三、读写分离3.1 架构图3.2 ShardingSphere 配置四、MHA 架构4.1 MHA 组件4.2 配置示例五、MGR 架构5.1 MGR 特点5.2 配置示例总结一、高可用概述1.1 高可用指标指标可用性年停机时间2个999%87.6小时3个999.9%8.76小时4个999.99%52.6分钟5个999.999%5.26分钟1.2 高可用架构对比方案优点缺点主从复制简单、成本低手动切换MHA自动切换需要额外组件MGR原生支持、自动选主性能有损耗MySQL Cluster高可用、高性能架构复杂二、主从复制2.1 复制原理┌─────────┐ Binlog ┌─────────┐ Relay Log ┌─────────┐ │ Master │ ──────────► │ I/O │ ────────────► │ Slave │ │ │ │ Thread │ │ Thread │ └─────────┘ └─────────┘ └─────────┘2.2 配置步骤# Master 配置 (my.cnf) [mysqld] server-id 1 log-bin mysql-bin binlog-format ROW gtid-mode ON enforce-gtid-consistency ON # Slave 配置 (my.cnf) [mysqld] server-id 2 relay-log relay-bin read-only ON-- Master 创建复制用户CREATEUSERrepl%IDENTIFIEDBYpassword;GRANTREPLICATIONSLAVEON*.*TOrepl%;-- Slave 配置复制CHANGE MASTERTOMASTER_HOST192.168.1.100,MASTER_USERrepl,MASTER_PASSWORDpassword,MASTER_AUTO_POSITION1;STARTSLAVE;三、读写分离3.1 架构图┌─────────────────────────────────────────────────────────────┐ │ 应用层 │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 中间件层 (ShardingSphere) │ └─────────────────────────────────────────────────────────────┘ │ │ ▼ ▼ ┌─────────┐ ┌─────────┐ │ Master │ │ Slave │ │ (写) │ │ (读) │ └─────────┘ └─────────┘3.2 ShardingSphere 配置# application.ymlspring:shardingsphere:datasource:names:master,slavemaster:type:com.zaxxer.hikari.HikariDataSourcedriver-class-name:com.mysql.cj.jdbc.Driverjdbc-url:jdbc:mysql://192.168.1.100:3306/mydbusername:rootpassword:rootslave:type:com.zaxxer.hikari.HikariDataSourcedriver-class-name:com.mysql.cj.jdbc.Driverjdbc-url:jdbc:mysql://192.168.1.101:3306/mydbusername:rootpassword:rootrules:readwrite-splitting:data-sources:myds:write-data-source-name:masterread-data-source-names:slaveload-balancer-name:round_robinload-balancers:round_robin:type:ROUND_ROBIN四、MHA 架构4.1 MHA 组件┌─────────────────────────────────────────────────────────────┐ │ MHA Manager │ │ (监控 故障切换) │ └─────────────────────────────────────────────────────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ Master │ │ Slave1 │ │ Slave2 │ └─────────┘ └─────────┘ └─────────┘4.2 配置示例# /etc/masterha/app1.cnf [server default] manager_workdir/var/log/masterha/app1 manager_log/var/log/masterha/app1/manager.log usermha passwordmha repl_userrepl repl_passwordrepl ssh_userroot [server1] hostname192.168.1.100 candidate_master1 [server2] hostname192.168.1.101 candidate_master1 [server3] hostname192.168.1.102 no_master1五、MGR 架构5.1 MGR 特点┌─────────────────────────────────────────────────────────────┐ │ MGR 特点 │ ├─────────────────────────────────────────────────────────────┤ │ ✅ 原生支持MySQL 5.7.17 内置 │ │ ✅ 自动选主主节点故障自动选举新主 │ │ ✅ 数据一致基于 Paxos 协议 │ │ ✅ 读写分离支持单主和多主模式 │ └─────────────────────────────────────────────────────────────┘5.2 配置示例# my.cnf [mysqld] server-id 1 gtid_mode ON enforce_gtid_consistency ON binlog_format ROW log_bin mysql-bin log_slave_updates ON # MGR 配置 plugin_load_add group_replication.so group_replication_group_name aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee group_replication_start_on_boot ON group_replication_local_address 192.168.1.100:33061 group_replication_group_seeds 192.168.1.100:33061,192.168.1.101:33061 group_replication_single_primary_mode ON-- 启动 MGRCREATEUSERrepl%IDENTIFIEDBYpassword;GRANTREPLICATIONSLAVEON*.*TOrepl%;CHANGE MASTERTOMASTER_USERrepl,MASTER_PASSWORDpasswordFORCHANNELgroup_replication_recovery;STARTGROUP_REPLICATION;总结✅高可用概述可用性指标、架构对比✅主从复制原理、配置✅读写分离中间件配置✅MHA 架构自动故障切换✅MGR 架构MySQL 原生高可用下篇预告分库分表实战指南作者刘~浪地球系列数据库与缓存一更新时间2026-04-10