mysql 在1臺linux主機上通過docker部署1主2從
架構圖:Master 提供增刪改功能,2個Slave提供查詢功能
系統環境:
linux 版本
docker 版本
1.1 拉取 mysql 容器映象
docker pull mysql:8.0
檢視已經獲取的映象
docker images
1.2 執行映象
建立 master 容器 mysql-master_3307
docker run -d --restart=always --name mysql-master_3307 -p 3307:3306 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
建立 slave 容器 mysql-slave_3311
docker run -d --restart=always --name mysql-slave_3311 -p 3311:3306 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
建立 slave 容器 mysql-slave_3312
docker run -d --restart=always --name mysql-slave_3312 -p 3312:3306 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
測試連線:
注意:如果伺服器主機是在雲伺服器上需要在防火牆上設定允許 3307,3311,3312埠。
1.3 配置master主庫和slave從庫
1.3.1 進入 mysql-master_3307 容器配置master主庫
進入 mysql-master_3307 容器 docker exec -it mysql-master_3307 bash
再切目錄 cd /etc/mysql
需要編輯該目錄下的my.cnf檔案,這裡如果沒有vim命令的話需要先安裝vim命令(主從兩個容器都需要這樣安裝)。
a.安裝vim命令:apt-get update
b.更新完成後再次安裝:apt-get install vim
完成之後,需要更改my.cnf配置 vim my.cnf
主庫 mysql-master_3307 配置檔案 my.cnf 配置如下
1.3.2 進入 mysql-slave_3311 容器配置slave從庫
重複 1.3.1 配置主庫的步驟,即進入容器,切目錄,安裝vim,修改配置檔案 my.cnf
從庫 mysql-slave_3311 配置檔案 my.cnf 配置如下
1.3.3 進入 mysql-slave_3312 容器配置slave從庫
重複 1.3.1 配置主庫的步驟,即進入容器,切目錄,安裝vim,修改配置檔案 my.cnf
從庫 mysql-slave_3312 配置檔案 my.cnf 配置如下
1.4 重啟主庫和從庫容器
以退出 主庫為例:
先退出容器內部 exit
docker restart mysql-master_3307
然後重複1.4步驟,重啟兩個slave容器
1.5 檢視主庫狀態
進入到容器,然後再連線容器內部mysql
docker exec -it mysql-master_3307 bash
mysql -u root -p123456
show global variables like 'log_bin%';
在主庫上修改root可以通過任何客戶端連線
alter user 'root'@'%' identified with mysql_native_password by '123456';
再檢視 master 狀態(在容器內部連線上mysql執行命令)
show master status;
1.6 配置從庫
1.6.1 配置從庫 mysql-slave_3311
連線到容器mysql伺服器
docker exec -it mysql-slave_3311 bash
mysql -u root -p123456
修改root可以通過任何客戶端連線
alter user 'root'@'%' identified with mysql_native_password by '123456';
然後再配置從庫同步主庫配置語句如下:
change master to
master_host='10.0.12.7',
master_user='root',
master_log_file='mysql-bin.000001',
master_log_pos=157,
master_port=3307,
master_password='123456';
如果是區域網部署其中的 master_host 就是ifconfig命令下的ip地址
在從庫上開啟同步
start slave;
在從庫上檢視同步狀態
show slave status \G;
1.6.2 配置從庫 mysql-slave_3312
重複 1.6.1 配置從庫 mysql-slave_3311的步驟就行;
注意:改了主庫的配置重啟主庫容器,也要重啟一下從庫容器;
1.7 測試
使用navicat連線到3個主從伺服器
在主庫上執行以下語句:
create database Test; use Test; create table T_20220508 ( Id int, Name varchar(20) );
執行成功後,重新整理主庫和從庫
參考連結:
https://www.bilibili.com/video/BV1b44y1H7yM?p=19
https://blog.csdn.net/xizhen2791/article/details/123660049?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-5-123660049-blog-113703876.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-5-123660049-blog-113703876.pc_relevant_antiscanv2&utm_relevant_index=10