本文共 2233 字,大约阅读时间需要 7 分钟。
首先,我们需要创建一个docker-compose.yml文件来配置MySQL主从服务器的环境。以下是具体步骤:
mkdir mysql_servercd mysql_serversudo vim docker-compose.yml
version: "3"services: mysql_1: image: mysql:5.7 ports: - "3306:3306" volumes: - "/root/mysql_server/node1/data:/var/lib/mysql" - "/root/mysql_server/node1/conf.d:/etc/mysql/conf.d" environment: - MYSQL_ROOT_PASSWORD=123456 restart: always mysql_2: image: mysql:5.7 ports: - "3307:3306" volumes: - "/root/mysql_server/node2/data:/var/lib/mysql" - "/root/mysql_server/node2/conf.d:/etc/mysql/conf.d" environment: - MYSQL_ROOT_PASSWORD=123456 restart: always mysql_3: image: mysql:5.7 ports: - "3308:3306" volumes: - "/root/mysql_server/node3/data:/var/lib/mysql" - "/root/mysql_server/node3/conf.d:/etc/mysql/conf.d" environment: - MYSQL_ROOT_PASSWORD=123456 restart: always
sudo docker-compose up
netstat -lntp
由于Docker容器中没有安装vim,我们需要先安装vim工具:
docker exec -it mysql_server_mysql_1 apt-get update && sudo apt-get install vim
进入各个节点并修改配置文件:
docker exec -it mysql_server_mysql_1 vim /etc/mysql/mysql.conf.d/mysqld.cnf
在mysqld.cnf中添加以下内容:
[mysqld]server-id=100log-bin=mysql-bin
同样地,对mysql_2和mysql_3节点进行相同配置:
docker exec -it mysql_server_mysql_2 vim /etc/mysql/mysql.conf.d/mysqld.cnf
docker exec -it mysql_server_mysql_3 vim /etc/mysql/mysql.conf.d/mysqld.cnf
在mysqld.cnf中添加:
[mysqld]server-id=101log-bin=mysql-slave-bin
[mysqld]server-id=102log-bin=mysql-slave-bin
进入主库节点(如mysql_1)并启动服务:
sudo docker exec -it mysql_server_mysql_1 systemctl start mysql
查看主库状态:
sudo docker exec -it mysql_server_mysql_1 show master status
查看主库的Docker内网IP:
sudo docker inspect mysql_server_mysql_1
进入从库节点(如mysql_2)并执行以下命令:
CHANGE MASTER TO MASTER_HOST='172.18.0.4', MASTER_USER='root', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=154;
检查从库的同步状态:
show slave status\G
如果出现同步问题,可以执行以下命令:
stop slave;SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;start slave;
通过以上步骤,我们可以成功配置一个基于Docker的MySQL主从复制环境。
转载地址:http://dsqzz.baihongyu.com/