1. 程式人生 > >docker-compose 實現mysql主從節點

docker-compose 實現mysql主從節點

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