2

Postgres-9.4 で FDW シナリオをシミュレートするために、両方の postgres-9.4 を使用する単純な 2 つの CentOS サーバー構成があります。

fdw を使用して単純なテーブルを別のサーバー上の別のデータベースにリンクしました。読み取りは両端から完全に機能しました。問題はシリアル主キーにあり、同期していませんでした。つまり、元のテーブルから挿入した場合、外部テーブルから挿入した後、カウントは同期されません。およびその逆。

4

2 に答える 2

0

私も同じ問題を抱えていたので、Negma が彼のブログで提案したように試してみました。このソリューションは、1 行のみを挿入する場合にのみ機能します。同じトランザクションにさらに行を挿入すると、select max(id)常に同じ ID が返され、一意の ID は取得されません。

IDのタイプをシリアル/整数からuuidに変更することでこれを解決しました。次に、Negma が提案したのと同じことを行うことができますが、pgcrypto EXTENSION の gen_random_uuid() を使用します。

したがって、外部サーバーで次のことを行いました。

ALTER TABLE tablename ALTER COLUMN columnname SET DEFAULT gen_random_uuid();

外部テーブルについても同様です。

于 2016-03-02T14:57:12.310 に答える
0

Nick Barnes から得たコメントに基づいて、はい、両側のカウンターを同期して維持する必要があるため、常に実際のデータベースに最新のインデックスを照会する関数を作成しました。これにより、常に正しいインデックスに挿入されます。記録。これが生き残るかどうかはまだわかりませんが、すぐに本番環境で動作するようにします.

私はテーブルの例でそれについてここにブログを書きました。

于 2015-07-07T22:03:08.520 に答える