環境準備
- CentOS 7
- Docker 18.09.0
- MySQL 5.7
環境搭建
- 使用 Docker 搜尋 MySQL 映象,並且拉取 MySQL 5.7 版本.
docker search mysql
複製程式碼

docker pull mysql:5.7
複製程式碼

- 首先新建一個資料夾 master 裡面存放 MySQL 主節點的配置檔案 my.cnf
mkdir master && vi ./master/my.cnf
複製程式碼
開啟 bin log 和指定 server-id
[mysqld]
## 開啟二進位制日誌功能
log-bin = mysql-bin
## 設定server_id,一般設定為IP,注意要唯一
server-id = 3310
複製程式碼
- Docker 執行 MySQL 映象
docker run -d -e MYSQL_ROOT_PASSWORD=123456 --name master -v $PWD/master:/etc/mysql/conf.d -p 3310:3306 mysql:5.7
複製程式碼
執行成功後使用 docker ps mysql
檢視 MySQL 例項執行狀態

- Docker 方式連線 MySQL
docker exec -it master bash
mysql -uroot -p
複製程式碼

- 檢查 主節點 MySQL 的 master 狀態和 bin log 開啟情況

- 同樣方式搭建從節點 MySQL 例項
mkdir slave && vi ./slave/my.cnf
複製程式碼

- Docker 方式執行從節點 MySQL 例項
docker run -d -e MYSQL_ROOT_PASSWORD=123456 --name slave -v $PWD/slave:/etc/mysql/conf.d -p 3311:3306 mysql:5.7
複製程式碼

- 進入從節點 MySQL 例項關聯主節點 MySQL 例項
change master to master_host='localhost', master_user='root', master_password='123456', master_port=3310, master_log_file='mysql-bin.000003', master_log_pos=154, master_connect_retry=60;
複製程式碼
- 從節點 MySQL 開啟同步,並且檢視同步狀態
start slave
show slave status
複製程式碼

結果驗證
- 首先連線進入主節點 MySQL 例項,並且建立資料庫 test
docker exec -it master bash
mysql -uroot -p123456
create database test;
複製程式碼

- 連線進入從節點 MySQL 例項,檢視當前資料庫
docker exec -it slave bash
mysql -uroot -p123456
show databases;
複製程式碼

可以從圖中看到此刻主節點新增資料庫的操作也同步到從節點上了.
到此, Docker 方式的簡單版本 MySQL 主從搭建就算完成了.