2017-06-29 82 views
0

我有1個MySQL服務器來支持PHP應用程序。應用程序中的邏輯需要多個查詢。例如,要添加事務,我需要創建多個查詢對象並單獨運行這些查詢,而不使用commit。意思是首先在一個對象中添加交易數據。而要添加付款方式,我正在創建不同的對象。MySQL複製如何保持同步?

現在很好,因爲我只有1個MySQL服務器。如果我有多臺服務器(MySQL Master-Slave)會發生什麼情況。

在一次操作中創建不同的對象將調用不同的服務器。而且由於延遲數據可能無法在另一臺服務器上使用。

請告訴我這樣做是否正確。如果問題不清楚,請澄清。謝謝!

+0

您是在談論複製還是分開獨立的數據庫服務器? – Machavity

+0

@Machavity:複製。我打算切換到亞馬遜RDS或Azure MySQL。但是,我不確定當前的應用程序代碼和邏輯將支持。 –

回答

2

這實際上不是複製問題。假設您有查詢A,然後查詢B(依賴於A)和查詢C(依賴於B)。

所以你做直接的事情,並按順序A,B和C運行它們。複製將它們按相同的順序放入日誌中。所以當你的奴隸執行它們時,它將以相同的方式和順序執行它們。

即使它們不同步,從屬設備也知道它在日誌中的最後位置,並且會在那裏回覆。如果您使用RDS設置從站,則會自動爲您處理。

+0

知道了..因此,我假設即使在內部使用不同的服務器,也不會有任何延遲問題。如果查詢C依賴於B並且B不在服務器2中,那麼它將自動從RDS的中央日誌中獲取。 –

+0

另外,關於Azure MySQL的任何想法?他們剛剛啓動預覽。我所有的服務器都是天藍色的,所以我正在考慮通過RDS來完成,如果它是相同的。 –

+0

從未使用Azure,但RDS直接爲您管理奴隸(我假定Azure也是這樣做的)。有時候一個奴隸會被「卡住」,並且不得不通過命令使其失效,但這是爲了手動複製設置。 – Machavity

0

如果您正在考慮使用RDS,您將查詢集羣端點。該羣集端點將自動啓動處於活動狀態的服務器並在其中創建查詢。 提交查詢後,從屬數據庫將自動同步以反映您的更改。這需要幾毫秒。