Docker搭建分佈式MySQL主從服務

一. 創建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

主從配置成功後主庫數據新增、修改、刪除會同步到從庫

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章