Postgresql

從master複製到slave,從slave複製到master

  • August 29, 2013

我有一台主機和多台從機。主節點上的所有 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 分區玩一些有趣的技巧,但這最終會變得複雜,並且絕對是專家領域。

我的建議是盡可能避免多主複製。在數學上不可能讓它一直工作而不使其比單個系統更容易發生故障。努力設計,這樣你就不需要它了。

如果您確實需要它,請尋求一些專業幫助,無論是第二雙眼睛還是顧問(也可以讓另一位顧問審查設計)。這裡有很多可能出錯的地方,你真的需要更多地關注這個問題。

引用自:https://dba.stackexchange.com/questions/48921