共計 6769 個字符,預計需要花費 17 分鐘才能閱讀完成。
本篇內容主要講解“MySQL5.7 的多源復制方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“MySQL5.7 的多源復制方法”吧!
5.7 多源復制 1.1 實驗概要 1.1.1 實驗假設
本實驗假設已經完成操作系統和 MySQL 安裝部署。
1.1.2 實驗目的
MySQL5.7 的多源復制技術搭建部署,然后簡單測試。
1.1.3 環境信息
操作系統
MySQL 版本
服務器地址
服務器角色
Centos7
5.7.18
192.168.102.23
source 1
Centos7
5.7.18
192.168.102.24
source 2
Centos7
5.7.18
192.168.102.25
target
1.1.4 實驗規劃
服務器地址
服務器角色
MySQL 庫
賬戶
192.168.102.23
source 1
emily
repl23
192.168.102.24
source 2
evelyn
repl24
192.168.102.25
target
source 1.emily — target
source 2.evelyn — target
username:
source 1:repl23
source 2:repl24
1.2 實驗操作 1.2.1 源端備份數據庫
分別從 source1 和 source2 分別備份出 emily 和 evelyn 庫,然后分別 copy 到 target 中。其中操作步驟如下:
source 1:
## 備份
[root@dsm-db-102023 11:26:50 /root]
#mysqldump -uroot –pmysql –single-transaction
–master-data=2 –databases emily /root/dump/emily.sql
## 傳輸
[root@dsm-db-102023 11:34:38 /root/dump]
#scp /root/dump/emily.sql
root@192.168.102.25:/root/dump/
source 2:
## 備份
[root@test-mysql-10224 11:19:47 /root]
#mysqldump -uroot -pmysql
–single-transaction –master-data=2 –databases evelyn
/root/dump/evelyn.sql
## 傳輸
[root@dsm-db-102023 11:34:38 /root/dump]
#scp /root/dump/emily.sql
root@192.168.102.25:/root/dump/
1.2.2 創建同步賬戶
分別在 source1 和 source2 中創建同步賬戶 repl23、repl24
source1
root@192.168.102.23:3306
[emily] create user repl23 identified by repl
root@192.168.102.23:3306
[(none)] grant replication slave on *.* to repl23 @ %
source2
root@192.168.102.24:3306
[evelyn] create user repl24 identified by repl
root@192.168.102.24:3306
[evelyn] grant replication slave on *.* to repl24 @ %
1.2.3 目標端恢復數據庫
## 恢復 evelyn 庫
root@192.168.102.25:3306
[(none)] reset master
[root@dsm-db-102025 14:01:24 /root/dump]
#mysql -uroot -pmysql evelyn.sql
## 查看 gtid_purged
root@192.168.102.25:3306 [(none)] show
global variables like %gtid_purged%
+—————+——————————————+
| Variable_name | Value |
+—————+——————————————+
| gtid_purged |
921a9068-24d2-11e7-99b5-005056b59593:1-287,
bd783f44-258f-11e7-914b-005056b5d312:1-28071
|
+—————+——————————————+
## 恢復 emily 庫
root@192.168.102.25:3306
[(none)] reset master
[root@dsm-db-102025 14:21:22 /root/dump]
#mysql -uroot -pmysql
/root/dump/emily.sql;
## 設置 source1 和 source2 的 gtid_purged
root@192.168.102.25:3306 [(none)] show
variables like %gtid_purged%
+—————+——————————————+
| Variable_name | Value |
+—————+——————————————+
| gtid_purged | 7937ac78-3c39-11e7-b59e-005056b5d25f:1-4
|
+—————+——————————————+
## set global gtid_purged= 921a9068-24d2-11e7-99b5-005056b59593:1-287,bd783f44-258f-11e7-914b-005056b5d312:1-28071,7937ac78-3c39-11e7-b59e-005056b5d25f:1-4
root@192.168.102.25:3306
[(none)] reset master;
Query OK, 0 rows affected (0.01 sec)
root@192.168.102.25:3306 [(none)] set
global
gtid_purged= 921a9068-24d2-11e7-99b5-005056b59593:1-287,bd783f44-258f-11e7-914b-005056b5d312:1-28071,7937ac78-3c39-11e7-b59e-005056b5d25f:1-4
Query OK, 0 rows affected (0.00 sec)
root@192.168.102.25:3306 [(none)] show
variables like %gtid_purged%
+—————+————————————————————————————————————————————+
| Variable_name | Value |
+—————+————————————————————————————————————————————+
| gtid_purged |
7937ac78-3c39-11e7-b59e-005056b5d25f:1-4,
921a9068-24d2-11e7-99b5-005056b59593:1-287,
bd783f44-258f-11e7-914b-005056b5d312:1-28071
|
+—————+————————————————————————————————————————————+
1 row in set (0.01 sec)
root@192.168.102.25:3306 [(none)]
1.2.4 修改 MySQL 存儲方式
修改 MySQL 存儲 master-info 和 relay-info 的方式,即從文件存儲改為表存儲
## 在線修改
STOP SLAVE;
SET GLOBAL master_info_repository =
TABLE
SET GLOBAL relay_log_info_repository =
TABLE
## 修改配置文件
[mysqld]
master_info_repository=TABLE
relay_log_info_repository=TABLE
1.2.5 同步操作
? change master
登錄 slave 進行同步操作,分別 change master 到兩臺 master 主機,多源復制需要標注
FOR CHANNEL‘CHANNEL_NAME’區分
##source
1
root@192.168.102.25:3306
[(none)] CHANGE MASTER TO
MASTER_HOST= 192.168.102.23 ,MASTER_USER= repl23 ,
MASTER_PASSWORD= repl ,master_auto_position=1 FOR CHANNEL repl23
##source
2
root@192.168.102.25:3306
[(none)] CHANGE MASTER TO
MASTER_HOST= 192.168.102.24 ,MASTER_USER= repl24 ,
MASTER_PASSWORD= repl ,master_auto_position=1 FOR CHANNEL repl24
? 啟動 slave
啟動所有同步: start slave;
啟動單個同步: start slave for channel‘channel_name’;
## 啟動 source 1
root@192.168.102.25:3306
[(none)] start slave for channel repl23
## 啟動 source 2
root@192.168.102.25:3306
[(none)] start slave for channel repl24
? 檢查 slave 狀態
檢查所有 slave: show slave status\G;
檢查單個 slave: show slave status for chennel‘channel_name’\G;
## source 1
##source 1
root@192.168.102.23:3306
[emily] insert into emily(id,name)values(2, evelyn
Query OK, 1 row affected (0.00 sec)
root@192.168.102.23:3306
[emily] select * from emily;
+——+——–+
| id
| name |
+——+——–+
|
1 | emily |
|
2 | evelyn |
+——+——–+
2 rows in set (0.00 sec)
##target 驗證
root@192.168.102.25:3306
[emily] select * from emily;
+——+——–+
| id
| name |
+——+——–+
|
1 | emily |
|
2 | evelyn |
+——+——–+
2 rows in set (0.00 sec)
## source 2
root@192.168.102.24:3306
[evelyn] insert into evelyn(id,name)values(2, emily
Query OK, 1 row affected (1.00 sec)
root@192.168.102.24:3306
[evelyn] select * from evelyn;
+——+——–+
| id
| name |
+——+——–+
|
1 | evelyn |
|
2 | emily |
+——+——–+
2 rows in set (0.00 sec)
## target 端
root@192.168.102.25:3306
[evelyn] select * from evelyn;
+——+——–+
| id
| name |
+——+——–+
|
1 | evelyn |
|
2 | emily |
+——+——–+
2 rows in set (0.00 sec)
1.2.7 監控
select * from performance_schema.replication_connection_status\G;
##GTID
STOP
SLAVE FOR CHANNEL‘CHANNEL_NAME’;
SET
SESSION GTID_NEXT=’’;
BEGIN;COMMIT;
SET
SESSION GTID_NEXT=’AUTOMATIC’;
START
SLAVE FOR CHANNEL‘CHANNEL_NAME’;
## binlog+position
stop slave sql_thread FOR
CHANNEL‘CHANNEL_NAME’;;
set global
sql_slave_skip_counter=1;
start slave sql_thread FOR
CHANNEL‘CHANNEL_NAME’;;
##
root@192.168.102.25:3306
[(none)] set session
gtid_next= bd783f44-258f-11e7-914b-005056b5d312:28083
Query
OK, 0 rows affected (0.00 sec)
root@192.168.102.25:3306
[(none)] begin;commit;
Query
OK, 0 rows affected (0.00 sec)
root@192.168.102.25:3306
[(none)] set session gtid_next=automatic;
Query
OK, 0 rows affected (0.00 sec)
root@192.168.102.25:3306
[(none)] start slave for channel repl24
Query
OK, 0 rows affected (0.00 sec)
1.2.9 遇見錯誤
1、 Last_IO_Error: Relay log write failure: could not queue event from
master ##repl24
Last_IO_Error: Fatal error: Failed
to run after_read_event hook
##repl23
stop slave
start slave
最后發現是開啟一個源開啟了半同步復制,一個源沒有開題半同步復制。
2、 清除 slave 信息
reset slave
## 創建多源復制過程中,發現有一個 slave 沒有 channel_name,使用如下語句清除 slave 信息
reset slave all for channel
3、 root@192.168.102.24:3306 [evelyn] uninstall plugin
rpl_semi_sync_master;
Query OK, 0 rows affected (0.01 sec)
root@192.168.102.24:3306 [evelyn] uninstall plugin
rpl_semi_sync_slave;
Query OK, 0 rows affected (0.00
sec)
到此,相信大家對“MySQL5.7 的多源復制方法”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!