要在Docker上搭建MySQL主从服务,可以按照以下步骤进行操作:
首先,在你的主机上安装Docker和Docker Compose。
创建一个文件夹,例如
mysql_replication,用于存放相关配置文件。在
mysql_replication文件夹下创建docker-compose.yml文件,并添加以下内容:
version: '3'
services:
master:
image: mysql:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: your_database_name
MYSQL_USER: your_username
MYSQL_PASSWORD: your_password
slave:
image: mysql:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: your_database_name
MYSQL_USER: your_username
MYSQL_PASSWORD: your_password
确保将 your_root_password、your_database_name、your_username 和 your_password 替换为你自己的值。
- 创建一个名为
master.cnf的文件,并添加以下内容:
[mysqld]
server-id=1
log-bin=mysql-bin
- 同样地,在同一目录下创建一个名为
slave.cnf的文件,并添加以下内容:
[mysqld]
server-id=2
- 在终端中切换到
mysql_replication目录,并执行以下命令启动容器:
docker-compose up -d --build
- 容器启动后,进入主服务器容器中,并创建一个用于复制的用户。运行以下命令:
docker exec -it mysql_replication_master_1 mysql -uroot -p
在MySQL shell中执行以下语句(将 your_replication_user 和 your_replication_password 替换为你自己的值):
GRANT REPLICATION SLAVE ON *.* TO 'your_replication_user'@'%' IDENTIFIED BY 'your_replication_password';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
记下输出结果中的 File 和 Position 值。
- 在从服务器容器中,同样进入MySQL shell,并执行以下命令(将
<MASTER_IP>,<MASTER_PORT>,<REPLICATION_USER>和<REPLICATION_PASSWORD>替换为对应的值):
docker exec -it mysql_replication_slave_1 mysql -uroot -p
然后运行以下命令:
CHANGE MASTER TO MASTER_HOST='<MASTER_IP>', MASTER_PORT=<MASTER_PORT>, MASTER_USER='<REPLICATION_USER>', MASTER_PASSWORD='<REPLICATION_PASSWORD>', MASTER_LOG_FILE='mysql-bin.<File>', MASTER_LOG_POS=<Position>;
START SLAVE;
SHOW SLAVE STATUS\G;
确保将 <MASTER_IP>、<MASTER_PORT>、<REPLICATION_USER>、<REPLICATION_PASSWORD>、<File> 和 <Position> 替换为之前主服务器上输出的正确值。
- 检查从服务器状态,在输出结果中查找
"Slave_IO_Running: Yes"和"Slave_SQL_Running: Yes"来确保主从复制已经成功建立。
现在,你已经在Docker上成功搭建了MySQL主从服务。可以进行测试,尝试在主服务器上进行数据操作,并验证是否能在从服务器上同步复制数据。
内容由零声教学AI助手提供,问题来源于学员提问




