如何利用 Docker Compose 编排数据库主从同步环境指南

老丽姑娘_2296

老丽姑娘_2296

2026-06-24

667人浏览

原创

docker compose 搭建 mysql 主从同步需主库启用唯一 server-id 和 binlog,从库配置不同 server-id、relay-log 与 read_only;通过自定义网络、服务名通信及容器启动后执行 change replication source + start replica 完成自动化同步。

如何利用 docker compose 编排数据库主从同步环境指南

用 Docker Compose 搭建 MySQL 主从同步环境,核心是配置好主库(master)和从库(slave)的启动参数、网络互通性、复制用户权限及同步链路。整个过程不依赖外部脚本或手动干预容器内操作,关键靠 统一配置 + 容器自启即生效 实现自动化部署。

主库必须开启 binlog 并设唯一 server-id

MySQL 主从复制依赖二进制日志(binlog),所以主库必须启用并合理配置:

  • server-id 必须为非零整数,且在整个集群中唯一(如设为 1)
  • log-bin 开启 binlog,建议指定前缀(如 mysql-bin),避免默认名引发兼容问题
  • binlog-format 推荐使用 ROW 或 MIXED,避免 STATEMENT 在函数/临时表场景下同步失败
  • binlog-ignore-db 可选,跳过系统库(mysql、information_schema 等)减少冗余日志
  • 若使用 MySQL 8.0+,需确保 default_authentication_plugin=mysql_native_password,否则从库可能连不上

从库需配置 relay-log 和只读模式

从库角色是接收并重放主库日志,因此配置重点在中继日志与安全控制:

Docker Cli
Docker Cli

使用 Docker CLI 构建、运行、停止、检查和管理容器与镜像的助手。用于执行容器相关任务。

下载
  • server-id 必须与主库不同,且多个从库之间也不能重复(如 2、3)
  • relay-log 显式指定中继日志路径(如 mysql-relay-bin),便于排查同步卡点
  • read_only=1 强制从库只读,防止误写导致主从数据不一致
  • log-slave-updates=1 若需级联复制(比如 A→B→C),则从库 B 需开启该选项,否则不会生成自己的 binlog
  • MySQL 5.7 中 skip_slave_start 默认关闭,可省略;8.0+ 更推荐用 START REPLICA 替代旧命令

docker-compose.yml 中要保证服务依赖与网络可达

主从不是简单启动两个容器,而是需要从库能稳定解析主库服务名并建立 TCP 连接:

  • 用 depends_on 声明启动顺序(如 mysql-slave: depends_on: [mysql-master]),但注意它只控制启动先后,不等待主库 MySQL 服务就绪
  • 务必使用 自定义 bridge 网络(默认 bridge 不支持服务名解析),在 docker-compose.yml 顶层加 networks 定义,并让所有服务加入同一网络
  • 主库 command 中不要写死 --bind-address=127.0.0.1,应允许 0.0.0.0 或留空,默认监听所有接口
  • 从库连接主库时,MASTER_HOST 填服务名(如 mysql-master),而非 localhost 或 IP —— 容器内 localhost 指自己

初始化复制关系需在容器启动后执行 SQL 命令

Docker Compose 启动容器后,MySQL 进程已运行,但复制尚未建立。需通过 docker exec 执行初始化步骤:

  • 在主库创建复制用户:
    CREATE USER 'repl'@'%' IDENTIFIED BY 'repl123';<br>GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';<br>FLUSH PRIVILEGES;
  • 查主库位点:SHOW MASTER STATUS; 记下 File 和 Position
  • 在从库执行:
    CHANGE REPLICATION SOURCE TO<br>  SOURCE_HOST='mysql-master',<br>  SOURCE_USER='repl',<br>  SOURCE_PASSWORD='repl123',<br>  SOURCE_LOG_FILE='mysql-bin.000001',<br>  SOURCE_LOG_POS=156;<br>START REPLICA;
  • 验证:SHOW REPLICA STATUS\G,重点关注 Replica_IO_Running 和 Replica_SQL_Running 是否均为 Yes

不复杂但容易忽略

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

docker docker compose mysql

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

2023.07.24

685

4

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

4859

6

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

5797

6

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

2193

7

Docker容器化部署与DevOps实践
Docker容器化部署与DevOps实践

本专题面向后端与运维开发者,系统讲解 Docker 容器化技术在实际项目中的应用。内容涵盖 Docker 镜像构建、容器运行机制、Docker Compose 多服务编排,以及在 DevOps 流程中的持续集成与持续部署实践。通过真实场景演示,帮助开发者实现应用的快速部署、环境一致性与运维自动化。

2026.02.11

219

16

Docker 容器部署
Docker 容器部署

本专题整合了Docker容器部署相关内容,阅读专题下面的文章了解更多详细操作教程。

2026.03.31

431

14

Java容器化部署与Docker实践教程合集
Java容器化部署与Docker实践教程合集

聚焦 Java 应用的容器化与云原生部署,讲解 Dockerfile 编写规范与 Java 应用镜像构建、多阶段构建(Multi-stage Build)减小镜像体积、Jib / Buildpacks 免 Dockerfile 镜像构建方案、JVM 容器感知参数(-XX:MaxRAMPercentage)配置、Docker Compose 编排多服务(应用 + MySQL + Redis)、容器健康检查与资源限制、Kubernetes

2026.05.11

380

26

Go Docker与容器化部署教程合集
Go Docker与容器化部署教程合集

聚焦 Go 应用的容器化部署优势与实践,讲解 Go 静态编译特性(CGO_ENABLED=0)与 scratch / distroless 极小基础镜像构建、多阶段 Dockerfile 编写规范、交叉编译生成目标平台二进制、镜像安全扫描(Trivy)与漏洞修复、Docker Compose 本地编排开发环境、Kubernetes Deployment / Service / ConfigMap 部署 Go 服务、健康检查(Livene

2026.05.15

285

24

Hyperf 项目部署运维与性能调优手册
Hyperf 项目部署运维与性能调优手册

聚焦 Hyperf 在生产环境的落地,包含 Docker 高效打包、Swoole 配置优化、常见的内存溢出(OOM)问题排查方法以及热更新方案。

2026.05.19

405

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

Docker 官方文档
Docker 官方文档

共0课时 | 0人学习

宝塔 Docker 模块使用手册
宝塔 Docker 模块使用手册

共0课时 | 0人学习