MySQL 5.7 多主一從(多源複製)同步配置
多主一從,也稱為多源複製,資料流向:
-
主庫1 -> 從庫s
-
主庫2 -> 從庫s
-
主庫n -> 從庫s
應用場景
-
資料彙總,可將多個主資料庫同步彙總到一個從資料庫中,方便資料統計分析。
-
讀寫分離,從庫只用於查詢,提高資料庫整體效能。
部署環境
注:使用docker部署mysql例項,方便快速搭建演示環境。但本文重點是講解主從配置,因此簡略描述docker環境構建mysql容器例項。
-
資料庫:MySQL 5.7.x (相比5.5,5.6而言,5.7同步效能更好,支援多源複製,可實現多主一從,主從庫版本應保證一致)
-
作業系統:CentOS 7.x
-
容器:Docker 17.09.0-ce
-
映象:mysql:5.7
-
主庫300:IP=192.168.10.212; PORT=4300; server-id=300; database=test3; table=user
-
主庫400:IP=192.168.10.212; PORT=4400; server-id=400; database=test4; table=user
-
主庫500:IP=192.168.10.212; PORT=4500; server-id=500; database=test5; table=user
-
從庫10345:IP=192.168.10.212; PORT=4345; server-id=10345; database=test3,test4,test5; table=user
配置約束
-
主從庫必須保證網路暢通可訪問
-
主庫必須開啟binlog日誌
-
主從庫的server-id必須不同
【主庫300】操作及配置
配置my.cnf
安裝啟動
注:若不熟悉docker,可使用傳統方式安裝mysql,效果相同。
建立授權使用者
連線mysql主資料庫,鍵入命令mysql -u root -p,輸入密碼後登入資料庫。建立使用者用於從庫同步複製,授予複製、同步訪問的許可權
log_bin是否開啟
檢視master狀態
【主庫400】配置及操作
配置my.cnf
安裝啟動
建立授權使用者
建立使用者用於從庫同步複製,授予複製、同步訪問的許可權
log_bin是否開啟
檢視master狀態
【主庫500】配置及操作
配置my.cnf
安裝啟動
建立授權使用者
建立使用者用於從庫同步複製,授予複製、同步訪問的許可權
log_bin是否開啟
檢視master狀態
【從庫10345】配置及操作
配置my.cnf
安裝啟動
設定【主庫】資訊
登入【從庫10345】,進入mysql命令列。
stop slave; //停止同步
start slave; //開始同步
//必須和【主庫】的資訊匹配。
CHANGE MASTER TO
MASTER_HOST='192.168.10.212', //主庫IP
MASTER_PORT=4300, //主庫埠
MASTER_USER='slave', //訪問主庫且有同步複製許可權的使用者
MASTER_PASSWORD='123456', //登入密碼
//【關鍵處】從主庫的該log_bin檔案開始讀取同步資訊,主庫show master status返回結果
MASTER_LOG_FILE='mysql-bin.000003',
//【關鍵處】從檔案中指定位置開始讀取,主庫show master status返回結果
MASTER_LOG_POS=438
for channel '300'; //定義通道名稱
檢視同步狀態
可以看見設定三個的主從同步通道的所有狀態資訊。
只有【Slave_IO_Running】和【Slave_SQL_Running】都是Yes,則同步是正常的。
如果是No或者Connecting都不行,可檢視mysql-error.log,以排查問題。
配置完成,則【從庫10345】開始自動同步。
若需要單獨啟動或停止某個同步通道,可使用如下命令:
start slave for channel '300'; //啟動名稱為300的同步通道
stop slave for channel '300'; //停止名稱為300的同步通道
驗證資料同步
建庫
使用root賬號登入【主庫300】,建立test3資料庫
建表
在【主庫300】中建立user表
新增
在【主庫300】中向user表插入一條資料:
在【從庫10345】中查詢user表資料:
新增記錄同步成功。
更新
在【主庫300】中修改剛才插入的資料:
在【從庫10345】中查詢user表資料:
更新記錄同步成功。
刪除
在【主庫300】中刪除剛才更新的資料:
在【從庫10345】中查詢user表資料:
刪除記錄同步成功。
注:【主庫400】、【主庫500】的驗證操作與上述類似。
補充:
-
如果【主伺服器】重啟mysql服務,【從伺服器】會等待與【主伺服器】重連。當主伺服器恢復正常後,從伺服器會自動重新連線上主伺服器,並正常同步資料。
-
如果某段時間內,【從資料庫】伺服器異常導致同步中斷(可能是同步點位置不匹配),可以嘗試以下恢復方法:進入【主資料庫】伺服器(正常),在bin-log中找到【從資料庫】出錯前的position,然後在【從資料庫】上執行change master,將master_log_file和master_log_pos重新指定後,開始同步。
相關文章
- mysql主從複製(一):一主多從MySql
- MySQL5.7主從複製-半同步複製搭建MySql
- MySQL 5.7的安裝及主從複製(主從同步)MySql主從同步
- MySQL叢集之 主從複製 主主複製 一主多從 多主一叢 實現方式MySql
- mysql5.7主從複製,主主複製MySql
- MySQL5.7主從複製教程MySql
- mysql複製--主從複製配置MySql
- MySQL 多源複製MySql
- MySQL主從同步(一主一從、一主多從、主從從)等結構的概述與配置MySql主從同步
- mysql 5.7 主從複製搭建及原理MySql
- MySQL主從複製之半同步複製MySql
- MySQL主從複製之非同步複製MySql非同步
- mysql 5.7半同步複製MySql
- MySQL 配置多主一從 ( 8.0.18 版本 )MySql
- MySQL 5.7基於GTID的主從複製MySql
- MySQL 5.7 基於GTID搭建主從複製MySql
- MYSQL主從複製配置(整理)MySql
- mysql 5.7主從配置MySql
- Mysql5.7半同步複製MySql
- MYSQL主從複製製作配置方案MySql
- MySQL-主從複製之同步主從資料MySql
- MySQL5.7在滴滴雲主機上的主從複製MySql
- MySQL(14)---Docker搭建MySQL主從複製(一主一從)MySqlDocker
- MySQL 5.7傳統複製到GTID線上切換(一主一從)MySql
- MySQL 主從複製安裝部署配置MySql
- Docker 教程十五配置MySQL 主從複製DockerMySql
- MySQL主從同步配置MySql主從同步
- CentOS6.5配置MYSQL一主多從詳解CentOSMySql
- Mysql實現主從複製(一主雙從)MySql
- MySQL主從複製MySql
- MySQL主從複製配置心跳功能介紹MySql
- 主從複製--非同步篇非同步
- MySQL主從複製之GTID複製MySql
- #MySQL# mysql5.7新特性之半同步複製MySql
- MySQL主從複製原理MySql
- MySQL的主從複製MySql
- mysql--主從複製MySql
- mysql 8.4 主從複製MySql