天天看點

docker 安裝mysql 主從複制docker 安裝mysql 主從複制

docker 安裝mysql 主從複制

一、安裝mysql

# docker run -p 3306:3306 --name master -e MYSQL_ROOT_PASSWORD=root -di --restart=always mysql:5.6.46

docker run -p 主機端口:容器端口 --name 自定義容器名 -i  -t  -d  -v  主機目錄:容器目錄:ro  鏡像ID或鏡像名:TAG
#--name 指定容器名,可自定義,不指定自動命名
#-i以互動模式運作容器
#-t配置設定一個僞終端,即指令行,通常-it組合來使用
#-p指定映射端口,講主機端口映射到容器内的端口
#-d背景運作容器
#-V指定挂載主機日錄到容器日錄,預設為rw讀寫模式,ro表示隻讀
#-e MYSQL_ROOT_PASSWORD=root 設定MySQL預設密碼
# --restart=always  表示此容器開機啟動,隻要docker也設定了開機自啟,docker不死

           
# 安裝master  端口号為:3306
docker run -p 3306:3306 --name master -e MYSQL_ROOT_PASSWORD=root -di --restart=always mysql:5.6.46
# 安裝slave   端口号為:3307
docker run -p 3307:3306 --name slave -e MYSQL_ROOT_PASSWORD=root -di --restart=always mysql:5.6.46
# 安裝slave2  端口号為:3308
docker run -p 3308:3306 --name slave2 -e MYSQL_ROOT_PASSWORD=root -di --restart=always mysql:5.6.46
           

二、進入master容器,修改配置檔案

兩種進入容器的方式:任選一種即可

docker exec -it 2sdf34sdfsw  /bin/bash    // 2sdf34sdfsw 為容器id

docker exec -it master /bin/bash          // master為自定義容器名字
           

進入 master容器 目錄準備修改配置檔案:

docker 安裝mysql 主從複制docker 安裝mysql 主從複制

若發現容器内沒有 安裝 vim 指令的時候,輸入一下指令先安裝vim

apt-get update

apt-get install vim
           
[mysqld]
## 同一區域網路内注意要唯一
server-id=100  
## 開啟二進制日志功能,可以随便取(關鍵)
log-bin=master-bin
binlog-format=ROW     // 二級制日志格式,有三種 row,statement,mixed
binlog-do-db=資料庫名  //同步的資料庫名稱,如果不配置,表示同步所有的庫

           

配置完成後重新開機mysql服務:

service mysql restart
           

方法一:在Navicat中賦予使用者權限:

docker 安裝mysql 主從複制docker 安裝mysql 主從複制

方法二:

重新進入容器:

兩種進入【master容器】的方式:任選一種即可

docker exec -it 2sdf34sdfsw  /bin/bash    // 2sdf34sdfsw 為容器id

docker exec -it master /bin/bash          // master為自定義容器名字
           

登入到mysql用戶端:

mysql -uroot -proot
           

授予使用者 [slave] REPLICATION SLAVE權限和REPLICATION CLIENT權限

mysql> CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
Query OK, 0 rows affected (0.00 sec)

           

三、配置slave

docker exec -it slave /bin/bash
           

修改配置檔案:

[mysqld]
## 設定server_id,注意要唯一
server-id=101  
## 開啟二進制日志功能,以備Slave作為其它Slave的Master時使用
log-bin=mysql-slave-bin   
## relay_log配置中繼日志
relay_log=mysql-relay-bin  
read_only=1  ## 設定為隻讀,該項如果不設定,表示slave可讀可寫
           

配置完成後重新開機服務:

service mysql restart
           

四、開啟master-slave主從複制

進入master容器内,的mysql【用戶端】檢視master的狀态:

# 進入容器
docker exec -it master /bin/bash
# 進入用戶端
mysql -uroot -proot
# 展示狀态
show master status;
           

記住file和position欄對應的内容:

docker 安裝mysql 主從複制docker 安裝mysql 主從複制

進入到Slave庫myslq【用戶端】,執行如下指令:

【注意:在配置slave的時候,不要操作 master,否則 maser中的 position 會發生變化】

指令說明:

master_host :Master庫的位址,指的是容器的獨立ip,可以通過

docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名稱 | 容器id查詢容器的IP  進行查詢
           

如下所示:

docker 安裝mysql 主從複制docker 安裝mysql 主從複制

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
           
docker 安裝mysql 主從複制docker 安裝mysql 主從複制

在slave中mysql的終端執行指令:

# 開啟主從複制
start slave;
# 再次檢視狀态
show slave status \G
           
docker 安裝mysql 主從複制docker 安裝mysql 主從複制

如何停止從服務複制功能

在slave容器内的 mysql 用戶端内執行:

使用

stop slave;

指令

如何重新配置主從

在slave容器内的 mysql 用戶端内執行:

使用這兩個指令

stop slave;

reset master;

注意:初始化的時候主庫和從庫的資料一緻