使用Docker搭建MySQL主從複製(一主兩從)

簡介

本人在之前已經介紹過了使用Docker搭建MySQL一主一從的主從複製模式,具體搭建步驟可以參考本人的這篇博文,使用Docker搭建MySQL主從複製(一主一從),今天介紹下使用Docker搭建一主兩從的模式。一主兩從是在一主一從的基礎上進行的,所以對一主一從不太熟悉的同學可以先看一下本人的這篇文章使用Docker搭建MySQL主從複製(一主一從),再進行一主兩從的搭建,會更容易理解。

一主兩從搭建

使用Docker搭建MySQL主從複製(一主一從)中已經搭建了Master主庫和Slave從庫,現在開始搭建第二臺Slave從庫,暫且稱爲Slave2吧;
Slave2:

docker run -p 3303:3306 --name mysql-slave2 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

在這裏插入圖片描述
端口設置爲3303,名稱設置爲mysql-slave2。
進入到mysql容器:

docker exec -it 123d7b3bd13b /bin/bash

進入到/etc/mysql/目錄,通過vim命令修改mysql 的配置文件my.cnf,添加如下配置:

[mysqld]
# 配置server-id 需唯一
server-id=102
# relay_log配置中繼日誌
relay-log=mysql-relay-bin

保存退出,重啓使用如下命令重啓mysql服務,以便配置文件生效:

service mysql restart

重啓會導致docker容器停止,使用如下命令重新啓動容器:

docker restart mysql-slave2   # mysql-slave2 爲容器名稱,也可以使用容器ID

注意: 其實後續步驟和使用Docker搭建MySQL主從複製(一主一從)這篇文章中的 開啓Master-Slave主從複製 部分的內容基本一致。

進入Master庫mysql客戶端:輸入show master status查看Master狀態:

docker exec -it mysql-master /bin/bash    # 進入到master容器
mysql -uroot -p123456   # 進入到mysql客戶端

查看master的狀態:

mysql> show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000001 |     1235 |              |                  |                   |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

記住File和Position,後面需要用到。此時一定不要操作Master庫,否則將會引起Master狀態的變化,File和Position字段也將會進行變化。
進入到Slave2庫myslq客戶端,執行如下命令:

change master to master_host='172.18.0.3', master_user='slave', master_password='123456', master_port=3306, master_log_file='master-bin.000001', master_log_pos=1235, master_connect_retry=30;

命令說明:

在一主一從的文章中已經進行過說明,這裏再次說明一下:
master_host :Master庫的地址,指的是容器的獨立ip,可以通過
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名稱 | 容器id查詢容器的IP進行查詢:
如下所示:
在這裏插入圖片描述
master_port:Master的端口號,指的是容器的端口號
master_user:用於數據同步的用戶
master_password:用於同步的用戶的密碼
master_log_file:指定 Slave 從哪個日誌文件開始複製數據,即上文中提到的 File 字段的值
master_log_pos:從哪個 Position 開始讀,即上文中提到的 Position 字段的值
master_connect_retry:如果連接失敗,重試的時間間隔,單位是秒,默認是60秒

在Slave 中的mysql終端執行show slave status \G用於查看主從同步狀態。

show slave status \G

在這裏插入圖片描述
Slave_IO_Running 和 Slave_SQL_Running是查看主從是否運行的關鍵字段,默認爲NO,表示沒有進行主從複製。
使用start slave;開啓主從複製過程,然後再次查詢主從同步狀態show slave status \G
在這裏插入圖片描述
Slave_IO_RunningSlave_SQL_Running 都是Yes,說明主從複製已經開啓。此時可以測試數據同步是否成功。
具體測試可以參考一主一從中最後的測試方案,這裏不再贅述。
至此,mysql的一主兩從配置完成了。
簡單記錄,以備不時之需!!!

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