在生产环境中部署 MySQL 高可用(High Availability, HA)架构时,服务器配置需要兼顾性能、稳定性、数据安全和故障恢复能力。以下是 MySQL 高可用生产环境的服务器配置建议,涵盖硬件、操作系统、MySQL 配置和高可用架构选择等方面。
一、硬件配置要求
1. CPU
- 推荐配置:至少 8 核以上,建议 16 核或更高。
- 说明:高并发、复杂查询、事务处理对 CPU 要求较高,尤其是 OLTP 场景。
2. 内存(RAM)
- 推荐配置:
- 小型系统:16GB ~ 32GB
- 中型系统:64GB ~ 128GB
- 大型系统:256GB 或以上
- 说明:内存应足够大以支持
innodb_buffer_pool_size(通常设置为物理内存的 70%~80%),减少磁盘 I/O。
3. 存储(磁盘)
- 类型:SSD(NVMe SSD 更佳)
- 容量:
- 根据数据量预估,保留 30%~50% 增长空间。
- 建议数据盘与日志盘分离。
- RAID 配置:
- 建议 RAID 10(兼顾性能与冗余)或使用硬件 RAID 卡 + BBU。
- 或使用 ZFS/Btrfs 等支持写时复制和校验的文件系统。
4. 网络
- 带宽:至少 1Gbps,建议 10Gbps(尤其在主从复制、集群同步场景)。
- 延迟:节点间网络延迟应低于 1ms(同城机房)。
- 高可用建议:双网卡绑定(bonding)提升网络冗余。
二、操作系统配置
1. 操作系统
- 推荐系统:CentOS 7/8、RHEL 8/9、Ubuntu 20.04 LTS / 22.04 LTS、SUSE Linux Enterprise Server。
- 内核优化:
- 关闭透明大页(THP):
echo never > /sys/kernel/mm/transparent_hugepage/enabled - 调整 swappiness:
vm.swappiness = 1 - 文件系统使用 XFS 或 ext4(XFS 更适合大文件和高并发)。
- 关闭透明大页(THP):
2. 文件系统
- 推荐使用 XFS,支持大文件、高吞吐,适合数据库场景。
3. 安全与权限
- 禁用不必要的服务。
- 配置防火墙(iptables/firewalld),仅开放必要端口(如 3306、心跳端口等)。
- 使用非 root 用户运行 MySQL。
三、MySQL 配置优化
1. 关键参数配置(my.cnf)
[mysqld]
# 基础设置
server-id = 1
log-bin = mysql-bin
binlog-format = ROW
expire_logs_days = 7
# 性能相关
innodb_buffer_pool_size = 70%~80% of RAM
innodb_log_file_size = 1G~2G
innodb_log_buffer_size = 64M
innodb_flush_log_at_trx_commit = 1(强一致性)或 2(性能优先)
sync_binlog = 1(保证主从一致性)
# 并发连接
max_connections = 1000~5000(根据业务调整)
thread_cache_size = 50~100
table_open_cache = 2000~4000
# 其他
skip-name-resolve = ON
log-error = /var/log/mysql/error.log
2. 数据目录与日志分离
- 数据目录:
/data/mysql - 日志目录:
/logs/mysql(binlog、redo log、error log 等)
四、高可用架构选择与配置
1. 主从复制 + MHA(经典方案)
- 架构:一主多从 + MHA Manager 实现自动故障转移。
- 要求:
- 至少 3 台服务器(主 + 从 + MHA Manager)。
- SSH 免密登录。
- VIP(虚拟 IP)漂移。
- 优点:成熟稳定,成本低。
- 缺点:MHA 已停止维护,切换可能丢数据。
2. MySQL Group Replication(MGR)
- 架构:基于 Paxos 协议的多主或单主模式。
- 要求:
- MySQL 5.7.17+ 或 8.0+
- 所有节点配置相同,网络稳定。
- 至少 3 个节点(推荐奇数)。
- 优点:强一致性、自动选主、原生支持。
- 缺点:网络要求高,写入性能略低。
3. InnoDB Cluster(MGR + MySQL Shell + Router)
- 架构:官方推荐的高可用方案。
- 组件:
- MySQL Server + Group Replication
- MySQL Router(客户端路由)
- MySQL Shell(管理)
- 优点:自动化程度高,支持读写分离、故障自动切换。
- 适用场景:中大型生产环境。
4. 云原生方案(如 AWS RDS、阿里云 RDS、PolarDB)
- 优势:自动备份、监控、故障转移、弹性扩展。
- 适合:不想自建运维团队的企业。
五、备份与监控
1. 备份策略
- 物理备份:Percona XtraBackup(支持热备、增量)。
- 逻辑备份:mysqldump(小数据量)。
- 频率:每日全备 + 每小时增量 + binlog 实时归档。
- 异地备份:至少一份异地或离线备份。
2. 监控工具
- Prometheus + Grafana + MySQL Exporter
- Zabbix、Nagios
- 自研脚本监控主从延迟、连接数、慢查询等。
六、总结:典型生产配置示例
| 项目 | 推荐配置 |
|---|---|
| CPU | 16 核 |
| 内存 | 128GB |
| 存储 | NVMe SSD 1TB+,RAID 10 |
| 网络 | 10Gbps,低延迟 |
| 操作系统 | CentOS 7.9 / Ubuntu 20.04 LTS |
| MySQL 版本 | 8.0.3x(推荐) |
| 高可用方案 | InnoDB Cluster 或 MGR |
| 备份 | XtraBackup + binlog 持续归档 |
| 监控 | Prometheus + Grafana |
七、注意事项
- 避免单点故障:所有组件(数据库、MHA、VIP、监控)都应冗余。
- 定期演练故障切换:确保高可用机制真实有效。
- 容量规划:预留 30% 以上资源应对突发流量。
- 安全加固:定期更新补丁,限制远程访问。
通过合理配置硬件、操作系统、MySQL 参数及高可用架构,可构建稳定、高性能、可扩展的 MySQL 生产环境。建议根据业务规模和 SLA 要求选择合适的方案。
云计算HECS