2015-04-02 62 views
0

我在Ubuntu實例上運行MySQL作爲數據庫。我正在使用MySQL Master-Slave複製,其中主設備的更改將寫入從設備,從設備的更改將不會反映在主設備上。沒關係。我正在使用HAProxy負載均衡器將所有請求發送到主MySQL實例的MySQL實例前面。如果主MySQL實例處於關閉狀態,則MySQL實例將充當主服務器,並且HAProxy將發送所有請求以提供服務。主動 - 被動場景。Master關閉時的MySQL主從複製

HAProxy - 192.168.A.ABC 
MySQL Master - 192.168.A.ABD 
MySQL Slave - 192.168.A.ABE 

讓我們假設MySQL master(192.168.A.ABD)關閉。現在所有的請求都會被HAProxy發送到MySQL slave(192.168.A.ABE),現在他現在充當主MySQL服務器。

我的問題是

  • 當原來的主MySQL實例(192.168.A.ABD)是會發生什麼情況?
  • 將寫入新的MySQL主站(192.168.A.ABE)的更改再次複製到原始主站(192.168.A.ABD)嗎?

我該如何解決這種情況?

回答

1

首先我要說,我從來沒有直接使用HA代理,以便續評論說。

但是,在您當前的設置中,Master(ABD)將不同步,並且不會趕上。你將不得不重建使用mysqlDump或類似的工具。

你將需要的是一個Master < > Master設置(而不是Master > Slave),它使您可以寫入任一數據庫並使其反映在另一個數據庫中。這聽起來並不像聽起來那麼直截了當。

假設你已經有了master > slave設置,以及它們是同步的

在碩士(ABD)要添加:

auto_increment_increment=2 
auto_increment_offset=1 
log-slave-updates 

上的從(ABE)地址:

auto_increment_increment=2 
auto_increment_offset=2 
log-slave-updates 

您的my.cnf文件。重新啓動數據庫。這將有助於防止Duplicate Key Errors。 (注:那log-slave-updates不是嚴格要求,但更容易在未來添加另一個從站)

接下來,您想告訴主(ABD)從從站(ABE)複製。

根據MySQL的版本以及您是否使用GTID等,確切的過程略有不同。但基本上,您將在主設備上發出CHANGE MASTER聲明,以便從從設備複製。

你走吧。您可能希望避免同時寫入兩者,因爲這會打開整個其他水壺。但是,如果主設備出現故障,您可以將寫入切換到從設備,當主設備恢復時,它只會開始複製丟失的數據。

+0

感謝您解決困惑 – Techie 2015-04-02 15:12:19

-1

我正在考慮你的情況

Master - 192.168.A.ABD 
Slave - 192.168.A.ABE 

你不能直接添加主系統。要在系統中添加主設備,您需要執行以下步驟: 1)當主設備啓動時,您可以將其添加爲從設備。所以現在發生這種情況

Master - 192.168.A.ABE 
Slave - 192.168.A.ABD 

2)Then Then U can put master down。意思是你可以把192.168.A.ABD下來 3)然後再次添加這個作爲奴隸。所以,在此之後,你會得到下面scenarion

Master - 192.168.A.ABD 
Slave - 192.168.A.ABE 

您可以參考以下鏈接 https://dev.mysql.com/doc/refman/5.5/en/replication-solutions-switch.html

+0

請再次閱讀問題 – Techie 2015-04-02 14:08:39