前期準備
- 安裝 docker。
- 安裝 docker-compose 命令。
- 推薦本機安裝 mycli 命令。語法幾近原生,多了補全。
- 文章涉及到的 docker-compose.yml 和 Dockerfile 文件可以在 https://github.com/jessun2017/docker-files 的 mysql4dev 目錄下找到。
說明
簡單描述就是 docker-compose 命令可以按照 docker-compose.yml 中的配置來運行兩個包含 mysql 服務的容器。之后再單獨使用命令來配置從庫設置。
version: "3"
services:
mysql_master:
build:
context: ./
dockerfile: master/Dockerfile
volumes:
- "./mysql_master:/var/lib/mysql"
environment:
MYSQL_ROOT_PASSWORD: root
links:
- mysql_slave
ports:
- "33060:3306"
restart: always
hostname: mysql_master
mysql_slave:
build:
context: ./
dockerfile: slave/Dockerfile
volumes:
- "./mysql_slave:/var/lib/mysql"
environment:
MYSQL_ROOT_PASSWORD: root
ports:
- "33061:3306"
restart: always
hostname: mysql_slave
兩個數據庫的 root 用戶密碼都是 root 。主庫的連接地址為:127.0.0.1:33060
,從庫的連接地址為:127.0.0.1:33061
。兩個數據庫的持久化都會在當前目錄下 ./mysql_master
和 ./mysql_slave
。
步驟
- 在 mysql4dev 目錄下運行
docker-compose up
啟動兩個 mysql 容器。 - 首先
docker ps
查看一下兩個容器的基本情況。
docker ps 顯示結果 - 使用
mycli -h 127.0.0.1 -P 33060 -u root
命令來操作主庫。輸入show master status;
來確定 binlog 文件名和記錄的位置。
show master status; 顯示結果 - 使用
mycli -h 127.0.0.1 -P 33061 -u root
命令來操作從庫。輸入CHANGE MASTER TO MASTER_HOST='mysql_master',MASTER_USER='root',MASTER_PASSWORD='root',MASTER_LOG_FILE='replicas-mysql-bin.000005',MASTER_LOG_POS=154;
- 繼續
stop slave;
,start slave
來啟動從庫的復制功能。 - 使用
show slave status;
,如果顯示如下,表示主從設置已經成功。
[圖片上傳失敗...(image-36b34f-1583686594141)] - 這里有個注意點,如果
show slave status;
中顯示了 error,就需要重新從步驟3開始操作,重新同步。否則復制功能就會停滯。