docker-compose 實現mysql主從節點
阿新 • • 發佈:2018-12-21
step1:
- 首先docker-compose搭建三個mysql, 基礎操作
services: mysql-master: image: mysql:5.7.18 networks: mysqlnet: ipv4_address: 172.19.4.24 environment: - MYSQL_ROOT_PASSWORD=123456 ports: - "3307:3306" volumes: - /var/lib/mysql1:/var/lib/mysql - /root/mysqlCluster/conf/my-m.cnf:/etc/mysql/my.cnf:ro privileged: true restart: always mysql-slave1: image: mysql:5.7.18 networks: mysqlnet: ipv4_address: 172.19.4.25 environment: - MYSQL_ROOT_PASSWORD=123456 ports: - "3308:3306" volumes: - /var/lib/mysql2:/var/lib/mysql - /root/mysqlCluster/conf/my-s1.cnf:/etc/mysql/my.cnf:ro privileged: true restart: always depends_on: - mysql-master mysql-slave2: image: mysql:5.7.18 networks: mysqlnet: ipv4_address: 172.19.4.26 environment: - MYSQL_ROOT_PASSWORD=123456 ports: - "3309:3306" depends_on: - mysql-master volumes: - /var/lib/mysql3:/var/lib/mysql - /root/mysqlCluster/conf/my-s2.cnf:/etc/mysql/my.cnf:ro privileged: true restart: always networks: mysqlnet: driver: bridge ipam: driver: default config: - subnet: 172.19.4.0/26
step2
- 對映my.conf
- master節點:my-m.conf
[mysqld] log-bin=mysql-bin pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql secure-file-priv= NULL server-id=1 # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 !includedir /etc/mysql/conf.d/
- slave節點
- my-s1.conf
[mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql secure-file-priv= NULL server-id=2 relay_log_recovery=0 # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # Custom config should go here !includedir /etc/mysql/conf.d/
slave2 同上區別在 server-id=3
這兒不能重複
step3
docker-compose up -d
step4 主節點操作
docker-compose exec mysql-master /bin/sh
mysql -uroot -p123456
或用navicat 輸入以下
GRANT REPLICATION SLAVE ON *.* TO '在這兒設定你的賬號'@'%' IDENTIFIED BY '這兒設定你的密碼';
可以通過
show master status;
檢視狀態
step5 slave節點操作
- 首先進入slave1 節點
stop slave;
CHANGE MASTER TO
MASTER_HOST='172.19.4.24',
MASTER_PORT=3306,
MASTER_USER='你設定的賬號',
MASTER_PASSWORD='你設定的密碼',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=1718;
start slave;
可以看到
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
則設定成功。
下一步的讀寫分離後續附上
參考連結:https://blog.csdn.net/fighterandknight/article/details/80601968