Docker部署MySQL主从复制
如果只是本地实验或小规模环境,Docker 方式搭一主一从是很省心的。
基本结构
最小可用通常就是:
- 1 个 master
- 1 个 replica
核心不是“容器能不能起来”,而是:
- 配置文件是否正确分开
- 主从
server_id是否不同 - binlog 和复制用户是否准备好
配置文件里的关键项
主库:
server_id=1
log-bin=mysql-bin
read-only=0从库:
server_id=2
log-bin=mysql-bin
read-only=1如果只是练习主从复制,先把系统库排除掉会更省事。
启动容器时的经验
比起“命令能运行”,更重要的是目录结构和容器命名是否清晰。
因为主从环境后面排查问题时,会频繁做这些事:
- 看配置文件
- 看数据目录
- 进容器执行 SQL
- 重置复制关系
命名乱了,后面维护成本会持续升高。
主从复制的最小步骤
1. 主库创建复制账号
CREATE USER 'slave1'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'%';
FLUSH PRIVILEGES;2. 查看主库位点
SHOW MASTER STATUS;3. 从库指向主库
CHANGE MASTER TO
master_host='nas.me',
master_user='slave1',
master_password='123456',
master_port=4306,
master_log_file='mysql-bin.000003',
master_log_pos=1582;4. 启动并检查复制状态
START SLAVE;
SHOW SLAVE STATUS\\G判断是否成功
最实用的观察点还是这两个:
Slave_IO_Running: YesSlave_SQL_Running: Yes
如果这里不是 Yes,先不要急着改命令,优先看错误信息。
提醒
这类部署更适合实验、学习和局部工具环境。真正生产环境里,复制拓扑、故障切换和持久化边界都需要再认真设计。