一. 創建docker-compose.yml並啓動docker compose
mkdir mysql_server
cd mysql_server
sudo vim docker-compose.yml
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
二、MySQL主從配置
由於docker容器中沒有vim 首先apt-get update,然後安裝vim
1. docker exec -it 進入mysql鏡像,修改配置文件
進入node1,在/etc/mysql/mysql.conf.d/mysqld.cnf 中添加:
server-id=100
log-bin=mysql-bin
進入node2,在/etc/mysql/mysql.conf.d/mysqld.cnf中添加:
server-id=101
log-bin=mysql-slave-bin
進入node3,在/etc/mysql/mysql.conf.d/mysqld.cnf 中添加:
server-id=102
log-bin=mysql-slave-bin
2. 進入到主庫,查看status:
show master status;
3. 查看master的docker內網ip
sudo docker inspect mysql_server_mysql_1_1
4. 從庫執行同步SQL語句:
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;
如果出現問題:
stop slave;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;
5. 啓動slave同步進程
start slave;
6. 查看slave狀態:
show slave status\G
主從配置成功後主庫數據新增、修改、刪除會同步到從庫