1. 程式人生 > 其它 >mysql 在1臺linux主機上通過docker部署1主2從

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