1. 为什么需要容器化MySQL主从架构
在分布式系统架构中,数据库高可用是保障业务连续性的关键。传统物理机部署MySQL主从集群时,我们常遇到环境配置复杂、资源利用率低、故障恢复慢等问题。而Docker Swarm作为轻量级的容器编排工具,配合MySQL 8的新特性,能实现快速部署和灵活扩展。
我最近在生产环境用Docker Swarm部署了同时支持传统复制和GTID复制的MySQL 8集群,整个过程踩了不少坑,也积累了一些实战经验。下面就把完整方案和注意事项分享给大家。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境规划与准备工作
2.1 节点规划建议
对于生产环境,建议至少准备3个Swarm管理节点和2个工作节点。管理节点运行Swarm manager服务,工作节点运行MySQL容器。这样的架构可以保证:
- Manager节点奇数个避免脑裂
- 工作节点分离部署保证性能
- 至少1主1从满足基本高可用
测试环境可以用单机Swarm,但要注意:
bash复制# 单机初始化Swarm
docker swarm init --advertise-addr <IP地址>
2.2 MySQL镜像选择要点
官方MySQL 8镜像有多个变体,推荐选择:
mysql:8.0- 标准版,稳定性最好mysql:8.0-oracle- Oracle优化版- 避免使用
latest标签
重要参数预先准备:
bash复制# 必须预先创建的目录
mkdir -p /data/mysql/{master,slave}/{conf,data,logs}
3. 主库部署与配置
3.1 主库配置文件关键参数
my.cnf中需要特别关注的配置:
ini复制[mysqld]
server-id = 1
log_bin = mysql-bin
binlog_format = ROW
binlog_row_image = FULL
sync_binlog = 1
gtid_mode = ON
enforce_gtid_consistency = ON
binlog_group_commit_sync_delay = 100
binlog_group_commit_sync_no_delay_count =
