要在两台机器上使用Docker以主从复制的方式运行MySQL容器,你可以按照以下步骤进行操作:
-
安装Docker: 确保两台机器上都安装了Docker,并且Docker服务正在运行。
-
拉取MySQL镜像: 在两台机器上使用Docker拉取MySQL镜像:
docker pull mysql:5.7
-
启动主MySQL容器: 在机器A上启动主MySQL容器,并设置相关环境变量和挂载卷:
docker run -d --name mysql-master \ -p 3306:3306 \ -v /path/to/mysql-master/conf:/etc/mysql/conf.d \ -v /path/to/mysql-master/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=my-secret-pw \ mysql:5.7
请将
/path/to/mysql-master/conf
和/path/to/mysql-master/data
替换为实际的宿主机目录,my-secret-pw
替换为你的MySQL root密码 。 -
配置主容器: 编辑主容器的MySQL配置文件
my.cnf
,设置server-id
、log-bin
等参数,以启用二进制日志并配置复制所需的参数 。 -
启动从MySQL容器: 在机器B上启动从MySQL容器,同样设置环境变量和挂载卷,并指定不同的
server-id
:docker run -d --name mysql-slave \ -p 3306:3306 \ -v /path/to/mysql-slave/conf:/etc/mysql/conf.d \ -v /path/to/mysql-slave/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=my-secret-pw \ mysql:5.7
同样替换
/path/to/mysql-slave/conf
和/path/to/mysql-slave/data
为实际的宿主机目录 。 -
配置从容器: 在从容器的
my.cnf
中设置server-id
、relay-log
等参数,并确保log-slave-updates
和read_only
选项被设置 。 -
创建复制用户: 进入主容器并创建用于数据复制的用户:
docker exec -it mysql-master mysql -uroot -p CREATE USER 'slave'@'%' IDENTIFIED BY '123456'; GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%'; FLUSH PRIVILEGES;
-
设置主从复制: 在从容器中设置主从复制关系,使用主容器的IP地址、复制用户和密码,以及主容器的二进制日志文件和位置:
docker exec -it mysql-slave mysql -uroot -p CHANGE MASTER TO MASTER_HOST='主容器IP地址', MASTER_USER='slave', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107; START SLAVE;
-
检查复制状态: 在从容器中检查复制状态以确保一切正常:
SHOW SLAVE STATUS\G
确保两台机器的防火墙设置允许相应的端口通信,并且MySQL容器的配置文件正确设置了网络权限和复制所需的参数。以上步骤应该能够帮助你在两台机器上成功配置MySQL的主从复制环境 。