您好,登錄后才能下訂單哦!
這篇文章主要講解了“MYSQL 多源復制,過濾復制與應用場景介紹”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“MYSQL 多源復制,過濾復制與應用場景介紹”吧!
Mysql的使用中,會伴隨著一個其他數據庫中很少被提到的問題,數據融合。ORACLE ,SQL SERVER ,PG 你可以去分區表,MYSQL 中遇到這樣的問題大多去分庫分表去解決,雖然現在有了TIDB 可以進行MYSQL 的后續的數據融合,但如果數據量不大的情況下,或者有些 MYSQL 8的新支持的語法需求等等,多源復制還是一個好的選擇。
缺點也是顯而易見的,多源復制復制不會解決你復制中可能由于你不注意產生的復制的沖突問題。例如重名的數據庫,部署系統數據的沖突。下面就來看看如何來多源復制,和其中的一些 “坑”。
首先目前大部分單位的MYSQL 基本上已經啟用了 GTID ,這里下面的復制中,全部使用 GTID 的方式進行連接.
測試的機器有
主
192.168.192.200
192.168.192.202
從
192.168.192.201
首先備份 200 和 202 上的數據庫,備份的時候,僅僅只備份了需要進行數據同步的數據庫,并未進行全部備份,而做多源復制中,也需要這樣做,否則做第一個復制還好,后面的復制就不好做了,會有一些問題。
備份是通過mydumper 進行的備份,而mydumper 目前最新的0.95 是TIDB 的團隊在維護,應該是靠譜的在mysql 5.7及以下版本(如有不對請指正)
在 200 的機器上
在202 的機器上
在201 的機器上恢復相關的數據庫
恢復數據庫
同理恢復第二個數據庫到winner 數據庫
恢復后的數據庫 201 是這樣的。
下面我們來建立與兩臺MYSQL 主的復制
CHANGE MASTER TO MASTER_HOST='192.168.198.200', MASTER_USER='admin', MASTER_PORT=3306, MASTER_PASSWORD='XXXX', MASTER_AUTO_POSITION = 1 FOR CHANNEL 'C200';
CHANGE MASTER TO MASTER_HOST='192.168.198.202', MASTER_USER='admin', MASTER_PORT=3306, MASTER_PASSWORD='XXXX', MASTER_AUTO_POSITION = 1 FOR CHANNEL 'C202';
通過上面兩個語句,201 就已經與 200, 201 兩臺機器建立的復制的關系。
啟動復制 start slave; 查看201 上的復制狀態
我們可以看到對于兩臺主機的復制是OK 的。而坑其實就不遠了
1 舉例,為了管理mysql 方便,我們在每臺MYSQL 上建立管理庫monitor
那么馬上問題就在數據匯聚庫 201 上出現問題,我先后在 200 ,和 202 兩臺機器上建立monitor 數據庫,按照邏輯來說,201 的復制 關于202 的復制應該會停,但由于特殊的設置,并未停止復制。但201 的錯誤日志,會毫不留情的記錄這個錯誤。
下面的錯誤日志報告 202 主機創建數據庫的命令失敗了
其實這就是配置中,讓復制中的DDL 語句的錯誤忽略產生的結果,但如果我們繼續操作一些非DDL 的操作,則復制就不會繼續工作了。
我們創建一個表,test1 分表在 200 和 202 機器上,然后插入數據,201 的復制報錯了。原因是主鍵重復。
通過這個事例想說明的問題
1 如果多源復制,建議還是DDL 的錯誤在多源復制的機器上更寬容一些。
2 不建議有類似比如每個數據庫都有的數據庫并在這個數據庫里面還有同樣的表和主鍵設置
那如果有類似的問題怎么辦,必須要在每個MYSQL的物理服務器上有相同命名的數據庫,而這個庫可以不進行復制。
那就祭出我們的復制過濾來解決問題,原理就是我們對傳遞過來的日志進行過濾,凡是不在我們允許的復制的數據庫list 中的都不進行復制。
我們先停止201 上的復制,stop slave; 然后將201 上的monitor 數據庫刪除
在201上執行 下圖的語句
啟動復制,然后我們在原來的 200 和 202 上在對monitor 數據庫中的表進行操作,
202 上的表
200 上的表
而 201 上的可以刪除 monitor 數據庫,復制將過濾一概不是 employees winner 數據庫之外的數據。
下圖,201 已經沒有monitor 數據庫
并且201上的復制是正常工作的
MYSQL 的多源復制,其實是一個比較好的功能,也是針對某些分庫操作后的數據再次融合和簡單的數據聯合查詢而使用到的功能,當然其中的坑也很多,使用中不注意就會有各種復制的問題。
感謝各位的閱讀,以上就是“MYSQL 多源復制,過濾復制與應用場景介紹”的內容了,經過本文的學習后,相信大家對MYSQL 多源復制,過濾復制與應用場景介紹這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。