我想製作一個專用的SLAVE機器,用於三臺不同服務器上的三個數據庫的數據複製。換句話說,我想要做Multiple Master => SIngle從屬複製。是否可以使用MySQL進行N-master => 1-slave複製?
有沒有辦法做到這一點,儘可能簡單?
謝謝!
我想製作一個專用的SLAVE機器,用於三臺不同服務器上的三個數據庫的數據複製。換句話說,我想要做Multiple Master => SIngle從屬複製。是否可以使用MySQL進行N-master => 1-slave複製?
有沒有辦法做到這一點,儘可能簡單?
謝謝!
多主複製(具有多個主站的從站)不支持MySQL(除MySQL集羣外)。您可以執行循環(環)複製的主 - 主複製(描述爲here或here)。
在High performance MySQL 2nd edition,作者描述了一種使用主 - 主複製的巧妙組合和Blackhole
存儲引擎來模擬多主複製(第8章複製>複製拓撲>定製複製解決方案>仿效多主複製第373 - 375) 。
它們示出了兩個可能的拓撲:
使用兩個共主人(允許從萬事達1到萬事達2切換從設備的主設備)
Blackhole
,以便數據不會有效存儲在主設備1上。Blackhole
,使得數據不能被有效地存儲在萬事達2使用主鏈
Blackhole
,使得數據不能被有效地存儲在萬事達2請注意,此設置只允許你通過碩士1和更新更新發送到DB1到DB2到碩士2。你不能發送更新到任何主表的任何表。
Pehaps它可能與黑客所描述的解決方案結合起來,使用某種自動增量-首被搞砸的,並描述here或here一個真正的主 - 主複製(允許更新都是原件)。
沒有辦法,我知道。但是,如果這裏的要求只是簡單地擁有一個基於複製的備份機器,那麼您可以很容易地運行三個MySQL服務器(在不同的地址和/或端口上) - 我們在這裏執行此操作,並帶有兩個複製環每個包括我們的內部登臺服務器作爲節點。
如果您確實希望將所有數據都放到單個服務器中,並且表格模式是固定的或者非常靜態的並且在您的控制之下,那麼您就可以實現這個想法:建立一個服務器,其中包含三個數據庫並使用聯合引擎鏈接所有表。在理論上(巨大的警告:我從來沒有嘗試過!),然後您可以將這些聯合表複製到另一臺服務器上(也可能在同一臺機器上),從而爲您提供真正的單個MySQL數據的實時副本實例。你甚至可以嘗試再次複製,但這種方式可能是瘋狂:)
我對MySQL沒有太多瞭解,但是您是否有可能設置「僅上載」複製配置,其中主/發佈者的角色僅用於收集從屬/訂戶水平。
值得一看maatkit's table sync - 這不是「真正的」複製,但它可能是夠好的。