3 つの異なる Postgresql サーバー (将来的にはさらに増える可能性があります) にデータベースをセットアップしており、現在、bucardo マルチマスター グループを使用してすべてのテーブルを同期しています。
シーケンスを同期していません。私たちはそれを試しましたが、異なるサーバー上の同じテーブルで同時書き込みが発生すると、bucardo によってデータが失われることに気付きました。それらは同じキーを使用するため、同期時に bucardo は重複行の 1 つを削除することを選択します。
私たちの現在のアプローチは、データベースの各インスタンスでシーケンスを手動で名前空間にすることです。たとえば、インスタンス 1 はそのままにしておきます。すべてのインスタンス 2 テーブル シーケンスは 2^31/10 から開始するように更新され、インスタンス 3 テーブル シーケンスは 2^31/10*2 から開始するように変更されます。インスタンス 10 シーケンスは 2^31 から開始するように変更されます。 /10*9.
このアプローチについてどう思いますか? また、Bucardo マルチマスター セットアップについて他に何かアドバイスはありますか? Postgresql BDR は、まだ安定したリリースとは見なされていないため、オプションではありません。