在Linux的Docker中部署MySQL主从复制,可以按照以下步骤进行详细操作:
步骤1:安装Docker和Docker Compose 首先,确保在Linux服务器上已经安装了Docker和Docker Compose。可以按照Docker官方文档的指引进行安装。
步骤2:创建Docker Compose文件 在服务器上创建一个名为docker-compose.yml的文件,并使用文本编辑器打开该文件。
veversion: '3'
services:
master:
image: mysql:latest
container_name: mysql_master
restart: always
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: database_name
ports:
- "3306:3306"
volumes:
- ./master:/var/lib/mysql
networks:
- db_network
slave:
image: mysql:latest
container_name: mysql_slave
restart: always
environment:
MYSQL_ROOT_PASSWORD: root_password
ports:
- "3307:3306"
volumes:
- ./slave:/var/lib/mysql
networks:
- db_network
networks:
db_network:
在上述示例中,我们定义了两个MySQL容器服务,一个用于主服务器(master),另一个用于从服务器(slave)。需要将root_password替换为实际的MySQL root密码,将database_name替换为实际的数据库名称。
步骤3:启动Docker容器 在包含docker-compose.yml文件的目录下,执行以下命令启动Docker容器:
docker-compose up -d
这将启动两个MySQL容器,并在后台运行。
步骤4:配置主服务器 连接到主服务器的容器,执行以下命令进行配置:
docker exec -it mysql_master bash
然后,在容器内部执行以下命令以编辑MySQL配置文件:
vi /etc/mysql/my.cnf
找到并修改以下配置项:
bind-address = 0.0.0.0
log_bin = /var/log/mysql/mysql-bin.log
server-id = 1
保存并退出编辑器。
步骤5:重启主服务器容器 执行以下命令重启主服务器容器,使配置生效:
docker restart mysql_master
步骤6:配置从服务器 连接到从服务器的容器,执行以下命令进行配置:
docker exec -it mysql_slave bash
然后,在容器内部执行以下命令以编辑MySQL配置文件:
vi /etc/mysql/my.cnf
找到并修改以下配置项:
bind-address = 0.0.0.0
server-id = 2
保存并退出编辑器。
步骤7:重启从服务器容器 执行以下命令重启从服务器容器,使配置生效:
docker restart mysql_slave
步骤8:配置主从关系 在从服务器容器中执行以下命令,配置从服务器连接到主服务器:
docker exec -it mysql_slave bash
mysql -u root -p
CHANGE MASTER TO MASTER_HOST='mysql_master', MASTER_USER='root', MASTER_PASSWORD='root_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=XXX;
START SLAVE;
将root_password替换为实际的MySQL root密码,mysql-bin.000001替换为主服务器容器中实际的mysql-bin日志文件名,XXX替换为主服务器容器中实际的Position值。
步骤9:查看主从状态 在从服务器容器中执行以下命令,查看主从状态:
docker exec -it mysql_slave bash
mysql -u root -p
SHOW SLAVE STATUS\G
确保Slave_IO_Running和Slave_SQL_Running的值都为Yes,表示从服务器已成功连接到主服务器并开始复制。
完成以上步骤后,在Docker中成功部署了MySQL主从复制。主服务器上的更改将自动复制到从服务器上。