步骤一:创建Docker网络
1、在两台Linux机器上分别执行以下命令创建一个Docker网络,确保两个容器可以进行通信:
plaintextCopy Codedocker network create mysql-network
步骤二:启动主库容器
1、在主库所在的Linux机器上执行以下命令启动主库容器:
plaintextCopy Codedocker run -d --network=mysql-network --name=mysql-master -e MYSQL_ROOT_PASSWORD=your_password -v /path/to/mysql-data:/var/lib/mysql -p 3306:3306 mysql:latest --server-id=1 --log-bin=mysql-bin --binlog-format=row
这将启动一个名为mysql-master的容器,并将宿主机的3306端口映射到容器的3306端口上。你需要将your_password替换为你想要设置的MySQL root用户密码,将/path/to/mysql-data替换为存储MySQL数据的本地路径。
步骤三:启动从库容器
1、在从库所在的Linux机器上执行以下命令启动从库容器:
plaintextCopy Codedocker run -d --network=mysql-network --name=mysql-slave -e MYSQL_ROOT_PASSWORD=your_password -v /path/to/mysql-data:/var/lib/mysql mysql:latest --server-id=2 --log-bin=mysql-bin --binlog-format=row --read-only=1
这将启动一个名为mysql-slave的容器,并将它连接到mysql-network网络中。你需要将your_password替换为与主库相同的MySQL root用户密码,将/path/to/mysql-data替换为存储MySQL数据的本地路径。
步骤四:配置主从复制关系
1、在主库容器中,进入MySQL命令行:
plaintextCopy Codedocker exec -it mysql-master mysql -uroot -p
输入之前设置的MySQL root用户密码。
2、在MySQL命令行中执行以下命令创建用于复制的用户并授权:
plaintextCopy CodeCREATE USER 'replication_user' IDENTIFIED BY 'replication_password';
GRANT REPLICATION SLAVE ON *.* TO 'replication_user';
FLUSH PRIVILEGES;
将'replication_user'和'replication_password'替换为你想要设置的复制用户和密码。
3、在主库容器中执行以下命令获取主库的二进制日志文件名和位置:
plaintextCopy CodeSHOW MASTER STATUS;
记下输出中的File和Position值,将在后续配置从库时使用。
4、在从库容器中,进入MySQL命令行:
plaintextCopy Codedocker exec -it mysql-slave mysql -uroot -p
输入之前设置的MySQL root用户密码。
5、在MySQL命令行中执行以下命令配置从库复制关系:
plaintextCopy CodeCHANGE MASTER TO MASTER_HOST='mysql-master', MASTER_USER='replication_user', MASTER_PASSWORD='replication_password', MASTER_LOG_FILE='file_from_step_3', MASTER_LOG_POS=position_from_step_3;
START SLAVE;
将'mysql-master'、'replication_user'、'replication_password'替换为相应的值,'file_from_step_3'和position_from_step_3分别替换为第三步中获取的主库二进制日志文件名和位置。
6、退出MySQL命令行。
请确保按照正确的步骤进行操作,并根据实际情况调整命令中的参数和路径。