1,环境准备
- 一台服务器
- 安装 docker 来模拟两台主机
- 两个拥有相同 MySql 版本的容器
2,第一步,创建容器
Tip:因为 docker 挂载文件会导致容器内文件是空的(因为你外部的文件就是空的),所以需要先把 MySql 的配置文件复制出来,再去挂载。
-
先准备好外部要挂载的主从 MySql 配置文件夹
-
创建容器并挂载(我这里 3306 是主,3305 是从) 3305:3306 表示将容器内部的 3306 端口映射到服务器的 3305 接口,这样外部可以通过服务器的 3305 接口访问容器内部的 MySql 服务器
docker run -p 3306:3306 --name mysql_master -v /mysql/master/mysql:/etc/mysql -e MYSQL_ROOT_PASSWORD=dg -d mysql:5.7
docker run -p 3305:3306 --name mysql_slave -v /mysql/slave/mysql:/etc/mysql -e MYSQL_ROOT_PASSWORD=dg -d mysql:5.7
-
查看容器是否正常运行
-
修改主从服务器的 MySql 配置(my.cnf)
-
重启两个服务器
-
连接主服务器配置从服务器相关
-
主服务器配置 授权给从服务器的指定账号 root,其中 x.x.x.x 为服务器的 ip
GRANT REPLICATION SLAVE ON *.* TO 'root'@'x.x.x.x' IDENTIFIED BY 'dg';
刷新授权
FLUSH PRIVILEGES
查看主服务器状态(参数要给从服务器使用)
SHOW MASTER STATUS
- 从服务器配置 配置主服务器信息
CHANGE MASTER TO
master_host = 'x.x.x.x',--主服务器 ip
master_user = 'root',--主服务器账号
master_password = 'dg',--主服务器密码
master_log_file = 'mysql-bin.000004',--主服务器日志文件标号
master_log_pos = 594,--主服务器日志偏移量
master_port = 3306;--主服务器端口号
开启从属复制
START SLAVE
确保从服务器的 IO 线程和 SQL 线程都开启
- 测试