Postgresql
從master複製到slave,從slave複製到master
我有一台主機和多台從機。主節點上的所有 SQL 操作都應該發送到從節點。但是從節點上的表也可以寫入本地。從節點上的這些本地更改應該反映到主節點。
例如,假設我有一台主機,我們稱它為“M”,兩台從機我們稱它們為“A”和“B”
所有這些機器都有一個名為 test_table 的表和一個名為“id”的列。
我將數據插入到 M 機器上的 test_table 中。
(M)test_table |id| |1 | (A)test_table |id| (B)test_table |id|
現在這種變化反映在奴隸身上:
(M)test_table |id| |1 | (A)test_table |id| |1 | (B)test_table |id| |1 |
現在在從機 A 上,我進行了本地更改。
(M)test_table |id| |1 | (A)test_table |id| |2 | (B)test_table |id| |1 |
現在此更改反映到主伺服器:
(M)test_table |id| |2 | (A)test_table |id| |2 | (B)test_table |id| |1 |
然後主伺服器將此更改複製到從伺服器:
(M)test_table |id| |2 | (A)test_table |id| |2 | (B)test_table |id| |2 |
這種複制叫什麼名字?我怎樣才能在 postgresql 上實現這一點?
您正在尋找的是多主複製。多主複製存在大量潛在問題,因此最好的東西是工具包,而不是有保證的解決方案(想像在不同伺服器上的同一行上有兩個並發更新)。
Bucardo 將為兩台伺服器而不是三台伺服器進行多主機複製。您可能可以使用 Slony 和 table 分區玩一些有趣的技巧,但這最終會變得複雜,並且絕對是專家領域。
我的建議是盡可能避免多主複製。在數學上不可能讓它一直工作而不使其比單個系統更容易發生故障。努力設計,這樣你就不需要它了。
如果您確實需要它,請尋求一些專業幫助,無論是第二雙眼睛還是顧問(也可以讓另一位顧問審查設計)。這裡有很多可能出錯的地方,你真的需要更多地關注這個問題。