天天看點

Docker部署mysql主從複制1 Docker開啟master容器(使用mysql5.7)2 進入master conf 目錄 建立my.cnf3 重新開機master資料庫4 進入mysql-master 5 master 容器執行個體内建立使用者同步資料6 建立從資料庫容器執行個體7 在主控端從資料庫配置檔案目錄建立my.cnf8 重新開機slave執行個體9 在主資料庫中檢視主從狀态 10 進入從伺服器配置主從複制 11 在從資料庫中開啟主從同步12 測試

1 Docker開啟master容器(使用mysql5.7)

docker run --name mysql-master -e MYSQL_ROOT_PASSWORD=123456  -p 3307:3306 --privileged=true -v /home/mysql/mysql-master/log:/var/log/mysql -v /home/mysql/mysql-master/data:/var/lib/mysql -v /home/mysql/mysql-master/conf:/etc/mysql/conf.d -d mysql:5.7
           

2 進入master conf 目錄 建立my.cnf

cd /home/mysql/mysql-master/conf
vim /my.cnf

# my.cnf 内容
[mysqld] 
## 設定server_id,同一區域網路中需要唯一 
server_id=101
## 指定不需要同步的資料庫名稱 
binlog-ignore-db=mysql
## 開啟二進制日志功能 
log-bin=mall-mysql-bin
## 設定二進制日志使用記憶體大小(事務) 
binlog_cache_size=1M
## 設定使用的二進制日志格式(mixed,statement,row) 
binlog_format=mixed
## 二進制日志過期清理時間。預設值為0,表示不自動清理。 
expire_logs_days=7
## 跳過主從複制中遇到的所有錯誤或指定類型的錯誤,避免slave端複制中斷。 
## 如:1062錯誤是指一些主鍵重複,1032錯誤是因為主從資料庫資料不一緻 
slave_skip_errors=1062
           

3 重新開機master資料庫

docker restart mysql-master
           

4 進入mysql-master

docker exec -it mysql-master /bin/bash
           
Docker部署mysql主從複制1 Docker開啟master容器(使用mysql5.7)2 進入master conf 目錄 建立my.cnf3 重新開機master資料庫4 進入mysql-master 5 master 容器執行個體内建立使用者同步資料6 建立從資料庫容器執行個體7 在主要端從資料庫配置檔案目錄建立my.cnf8 重新開機slave執行個體9 在主資料庫中檢視主從狀态 10 進入從伺服器配置主從複制 11 在從資料庫中開啟主從同步12 測試

 5 master 容器執行個體内建立使用者同步資料

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
           
Docker部署mysql主從複制1 Docker開啟master容器(使用mysql5.7)2 進入master conf 目錄 建立my.cnf3 重新開機master資料庫4 進入mysql-master 5 master 容器執行個體内建立使用者同步資料6 建立從資料庫容器執行個體7 在主要端從資料庫配置檔案目錄建立my.cnf8 重新開機slave執行個體9 在主資料庫中檢視主從狀态 10 進入從伺服器配置主從複制 11 在從資料庫中開啟主從同步12 測試

6 建立從資料庫容器執行個體

docker run --name mysql-slave -e MYSQL_ROOT_PASSWORD=123456  -p 3308:3306 --privileged=true -v /home/mysql/mysql-slave/log:/var/log/mysql -v /home/mysql/mysql-slave/data:/var/lib/mysql -v /home/mysql/mysql-slave/conf:/etc/mysql/conf.d -d mysql:5.7
           

7 在主控端從資料庫配置檔案目錄建立my.cnf

# 建立my.cnf 檔案
vim /home/mysq/mysql-slave/conf/my.cnf

# 檔案内容
[mysqld]
## 設定server_id,同一區域網路中需要唯一
server_id=102
## 指定不需要同步的資料庫名稱
binlog-ignore-db=mysql 
## 開啟二進制日志功能,以備Slave作為其它資料庫執行個體的Master時使用
log-bin=mall-mysql-slave1-bin
## 設定二進制日志使用記憶體大小(事務
binlog_cache_size=1M
## 設定使用的二進制日志格式(mixed,statement,row
binlog_format=mixed
## 二進制日志過期清理時間。預設值為0,表示不自動清理。
expire_logs_days=7
## 跳過主從複制中遇到的所有錯誤或指定類型的錯誤,避免slave端複制中斷。 
## 如:1062錯誤是指一些主鍵重複,1032錯誤是因為主從資料庫資料不一緻 
slave_skip_errors=1062
## relay_log配置中繼日志 
relay_log=mall-mysql-relay-bin
## log_slave_updates表示slave将複制事件寫進自己的二進制日志 
log_slave_updates=1
## slave設定為隻讀(具有super權限的使用者除外) 
read_only=1
           

8 重新開機slave執行個體

# 重新開機mysql-slave
docker restart mysql-slave
           

9 在主資料庫中檢視主從狀态

show master status;
           
Docker部署mysql主從複制1 Docker開啟master容器(使用mysql5.7)2 進入master conf 目錄 建立my.cnf3 重新開機master資料庫4 進入mysql-master 5 master 容器執行個體内建立使用者同步資料6 建立從資料庫容器執行個體7 在主要端從資料庫配置檔案目錄建立my.cnf8 重新開機slave執行個體9 在主資料庫中檢視主從狀态 10 進入從伺服器配置主從複制 11 在從資料庫中開啟主從同步12 測試

 10 進入從伺服器配置主從複制

docker exec -it mysql-slave /bin/bash


mysql>change master to master_host='192.168.61.3', master_user='slave', master_password='123456', master_port=3307, master_log_file='mall-mysql-bin.000001', master_log_pos=617, master_connect_retry=30;
           
Docker部署mysql主從複制1 Docker開啟master容器(使用mysql5.7)2 進入master conf 目錄 建立my.cnf3 重新開機master資料庫4 進入mysql-master 5 master 容器執行個體内建立使用者同步資料6 建立從資料庫容器執行個體7 在主要端從資料庫配置檔案目錄建立my.cnf8 重新開機slave執行個體9 在主資料庫中檢視主從狀态 10 進入從伺服器配置主從複制 11 在從資料庫中開啟主從同步12 測試
# 參數說明
master_host:主資料庫的IP位址; 
master_port:主資料庫的運作端口; 
master_user:在主資料庫建立的用于同步資料的使用者賬号; 
master_password:在主資料庫建立的用于同步資料的使用者密碼; 
master_log_file:指定從資料庫要複制資料的日志檔案,通過檢視主資料的狀态,擷取File參數; 
master_log_pos:指定從資料庫從哪個位置開始複制資料,通過檢視主資料的狀态,擷取Position參數; 
master_connect_retry:連接配接失敗重試的時間間隔,機關為秒。 
           
#從資料庫檢視主從同步狀态
show slave status \G;
           
Docker部署mysql主從複制1 Docker開啟master容器(使用mysql5.7)2 進入master conf 目錄 建立my.cnf3 重新開機master資料庫4 進入mysql-master 5 master 容器執行個體内建立使用者同步資料6 建立從資料庫容器執行個體7 在主要端從資料庫配置檔案目錄建立my.cnf8 重新開機slave執行個體9 在主資料庫中檢視主從狀态 10 進入從伺服器配置主從複制 11 在從資料庫中開啟主從同步12 測試

 11 在從資料庫中開啟主從同步

mysql>start slave;
           
Docker部署mysql主從複制1 Docker開啟master容器(使用mysql5.7)2 進入master conf 目錄 建立my.cnf3 重新開機master資料庫4 進入mysql-master 5 master 容器執行個體内建立使用者同步資料6 建立從資料庫容器執行個體7 在主要端從資料庫配置檔案目錄建立my.cnf8 重新開機slave執行個體9 在主資料庫中檢視主從狀态 10 進入從伺服器配置主從複制 11 在從資料庫中開啟主從同步12 測試

 此時檢視主從同步狀态

mysql>show slave status \G;
           
Docker部署mysql主從複制1 Docker開啟master容器(使用mysql5.7)2 進入master conf 目錄 建立my.cnf3 重新開機master資料庫4 進入mysql-master 5 master 容器執行個體内建立使用者同步資料6 建立從資料庫容器執行個體7 在主要端從資料庫配置檔案目錄建立my.cnf8 重新開機slave執行個體9 在主資料庫中檢視主從狀态 10 進入從伺服器配置主從複制 11 在從資料庫中開啟主從同步12 測試

12 測試

主資料庫建立庫,建立表,從資料庫可以直接檢視。