1.环境
mysql:5.7.28 【主从使用的镜像版本一致】
单机双MySQL Docker容器
MySQL Master: 192.168.1.201:3305
MySQL Slave: 192.168.1.201:3304
Iptables 内网开放3304和3305端口
2. Master Docker配置
1 | docker pull mysql:5.7.28 |
vim mysql-master.conf
1 | [client] |
运行Docker容器
1 | docker run --name mysql-master -p 3305:3306 -v /root/mysql-master-docker/mysql-master.cnf:/etc/mysql/conf.d/my.cnf -v /data/A/mysql-master:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.28 |
参数说明:
- 容器的3306端口映射到宿主机的3305端口
- 把本地的mysql-master.cnf配置文件映射到容器内,修改实时生效。而mysql实际数据最终落地到/data/A/mysql-master目录
- 默认情况下,MySQL的启动配置文件是
/etc/mysql/my.cnf
,而/etc/mysql/conf.d
目录下的存在任何.cnf
格式的文件时,都会使用该文件中配置项替换默认配置。所以这里采用文件映射方式
1 | 进入MySQL Master容器 |
3. Slave Docker配置
1 | mkdir -p /data/A/mysql-slave |
vim mysql-slave.cnf
1 | [client] |
运行Docker容器
1 | docker run --name mysql-slave -p 3304:3306 -v /root/mysql-slave-docker/mysql-slave.cnf:/etc/mysql/conf.d/my.cnf -v /data/A/mysql-slave:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.28 |
1 | 进入MySQL Master容器 |
slave宿主机上测试连接Docker Master
1 | [root@localhost ~]# mysql -uroot -p -h 192.168.1.201 -P 3305 |
4. Master配置
配置数据同步用户
1 | grant replication slave on *.* to repl@'%' identified by 'repl123'; |
查看File position字段的值
1 | mysql -uroot -p -h 192.168.1.201 -P 3305 |
5. Slave执行主从复制命令
mysql -uroot -p -h 192.168.1.201 -P 3304
1 | CHANGE MASTER TO |
1 | stop slave; |
1 | *************************** 1. row *************************** |
- 本文作者: GaryWu
- 本文链接: https://garywu520.github.io/2020/01/07/Docker部署MySQL主从/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!