Postgresql

在沒有網路的情況下從兩個不同的位置同步兩個 postgres 數據庫

  • January 25, 2019

我有 2 個 postgres 數據庫在兩台不同的電腦上執行相同的方案,不能保證在處理讀/寫請求時有任何網路連接。

因為它們在兩個不同的位置執行,所以我試圖找到一種解決方案來不時合併它們以保持兩者的數據更新(我可以每隔幾周連接它們,或者使用快閃記憶體驅動器傳遞文件)。

我主要擔心的是這個數據庫在某些表中具有唯一值(自動增量主鍵),我不確定如何處理這個問題 - 如果兩個數據庫為不同的數據創建相同的鍵怎麼辦?是否有任何工具可以自動合併並輸出所做的更改?

(如果重要,請使用 postgres 10,ubuntu env。)

謝謝

我認為這樣做的一個好方法是讓序列的增量為 2 而不是 1。這樣你的主鍵在一個站點上甚至在另一個站點上都是不均勻的。然後,您可以合併而無需擔心。

create sequence seq_uneven increment by 2 start with 1;
create sequence seq_even increment by 2 start with 2;

然後您seq_uneven在一個站點和另一個站點seq_even上使用。

解決您主要問題的方法非常簡單,至少在概念上是這樣。使您的基於序列的列成為 bigint 或 bigserial,然後開始您的序列相距甚遠,以至於它們在任何可能的時間範圍內都不會重疊。如果這些值以例如發票號碼的形式向使用者公開,那麼您可能必須做出妥協,以使它們不會在任何實際時間範圍內重疊。

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