簡單講解MySQL中的多源復(fù)制
近日ORACLE發(fā)布幾個新的功能在最新的Mysql5.7.2的版本上,由此有了此篇文章。大多數(shù)的改善是在數(shù)據(jù)庫性能和復(fù)制相關(guān)的功能上,這個新版本會帶給我們不可思議的效果。
在這篇文章里,我將要用一些簡單的步奏來嘗試了解這新的多源復(fù)制工作原理以及我們怎樣進行自己的測試。需要說明的是,這還是一個開發(fā)版本,不是給生產(chǎn)環(huán)境準(zhǔn)備的。因此這篇文章是打算給那些想了解此新功能的人,看看它是如何在應(yīng)用中工作的,都是在臨時環(huán)境中進行相關(guān)操作。
什么是多源復(fù)制?
首先,我們需要清楚 multi-master 與multi-source 復(fù)制不是一樣的. Multi-Master 復(fù)制通常是環(huán)形復(fù)制,你可以在任意主機上將數(shù)據(jù)復(fù)制給其他主機。
Multi-source 是不同的. MySQL在這個新版本中修復(fù)了一個復(fù)制限制 , 這限制是一個從站只能有一個主站. 這是一個在我們設(shè)計復(fù)制環(huán)境中的限制因素,也有一些極客使它正常工作了。但是現(xiàn)在有一個官方的解決辦法了。所以。簡單的說, Multi-Source 意味著一個從站能有一個以上主站. 現(xiàn)在, 像下圖一樣的復(fù)制環(huán)境是可能的:
這將幫助我們創(chuàng)建一些復(fù)制的層次結(jié)構(gòu),這在過去是不可能的。 舉個例子,你可以 將一個從站放在你的辦公室里。在辦公室里從所有主站中復(fù)制數(shù)據(jù)傳播到世界各地。
它是怎么工作的呢?
現(xiàn)在我們有了通信渠道的概念,每一個通信渠道都是一個從服務(wù)器從主服務(wù)器獲得2進制日志的鏈接。這意味著每個通信渠道都得有一個IO_THREAD .我們需要運行不同的 “CHANGE MASTER” 命令, 對于每一個主服務(wù)器。我們需要用到 “FOR CHANNEL”這個參數(shù)來提供通信鏈接的名字。
CHANGE MASTER MASTER_HOST='something', MASTER_USER=... FOR CHANNEL="name_of_channel";
很容易. 有一個單一的先決條件。從服務(wù)器需要在mysql5.6上配置安全功能,這意味著信息通常包含在主服務(wù)器上。信息或日志應(yīng)該在一個表中,讓我們開始配置吧
來個例子!
首先你需要下載測試版的mysql。點這個鏈接:下載.
我們需要有一個從服務(wù)器和兩個主服務(wù)器的沙箱環(huán)境. 我不會細節(jié)的說明怎樣配置server_id, binary logs 和 replication users.我假設(shè)已經(jīng)配置好了。 如果你不知道怎么做。你可以看這個鏈接
首先,我們在從服務(wù)器上實現(xiàn)事故安全功能。
master_info_repository=TABLE; relay_log_info_repository=TABLE;
讓后重啟從服務(wù)器。我們可以開始創(chuàng)建通信渠道,用 “master1″ 和 “master2″這兩個名字:
slave > change master to master_host="127.0.0.1", master_port=12047, master_user="msandbox",master_password="msandbox" for channel="master1"; slave > change master to master_host="127.0.0.1", master_port=12048, master_user="msandbox",master_password="msandbox" for channel="master2";
按照所設(shè)定的通信名字啟動從服務(wù)器。
slave > start slave for channel="master1"; slave > start slave for channel="master2";
現(xiàn)在我們檢查一下從服務(wù)器狀態(tài):
slave > show slave status\G Empty set (0.00 sec)
啊。是空的。我們需要寫上通信名字。重新檢查下從服務(wù)器狀態(tài):
slave > SHOW SLAVE STATUS FOR CHANNEL="master1"\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 127.0.0.1 Master_User: msandbox Master_Port: 12047 Connect_Retry: 60 Master_Log_File: mysql-bin.000002 Read_Master_Log_Pos: 232 Relay_Log_File: squeeze-relay-bin-master1.000003 Relay_Log_Pos: 395 Relay_Master_Log_File: mysql-bin.000002 Slave_IO_Running: Yes Slave_SQL_Running: Yes [...]
我們也可以檢查正在運行的 IO_THREAD 和 SQL_THREADS :
slave > SHOW PROCESSLIST; +----+-------------+-----------------------------------------------------------------------------+ | Id | User | State | +----+-------------+-----------------------------------------------------------------------------+ | 2 | system user | Waiting for master to send event | | 3 | system user | Slave has read all relay log; waiting for the slave I/O thread to update it | | 4 | system user | Waiting for master to send event | | 5 | system user | Slave has read all relay log; waiting for the slave I/O thread to update it | +----+-------------+-----------------------------------------------------------------------------+
測試看一下:
master1 > create database master1; master2 > create database master2; slave > show databases like 'master%'; +--------------------+ | Database (master%) | +--------------------+ | master1 | | master2 | +--------------------+
正常工作了。看起來很簡單!
結(jié)論
這個新的multi-source功能使在過去需要一些復(fù)雜操作創(chuàng)建的復(fù)制環(huán)境變得簡單了。當(dāng)然,你應(yīng)用程序可以考慮這個新的特性設(shè)計和開發(fā),使用 multi-master, multi-source都需要特別注意,不要把你的數(shù)據(jù)都弄亂了。
在每一個新的版本中,mysql的復(fù)制功能給我們更多的配置,性能和設(shè)計的可能性。所有這些新功能都可以結(jié)合起來。在你新(老)的功能中增加復(fù)制功能,你的復(fù)制環(huán)境會更加出色。舉個例子:你可以配置 GTID 可以用 multi-threaded slave per schema或intra-database.
相關(guān)文章
mysql 8.0.18 安裝配置方法圖文教程(linux)
這篇文章主要介紹了linux下mysql 8.0.18 安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-11-11Windows10下mysql 5.7.21 Installer版安裝圖文教程
這篇文章主要為大家詳細介紹了Windows10下mysql 5.7.21 Installer版安裝圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-09-09MySQL中使用group by 是總是出現(xiàn)1055的錯誤(推薦)
這篇文章主要介紹了MySQL中使用group by 是總是出現(xiàn)1055的錯誤,小編通過查閱相關(guān)資料才把問題解決,今天小編記錄下分享到腳本之家平臺,需要的朋友可以參考下2020-02-02