1

アプリケーションコードを変更せずに、2つのデータベース間で一連のテーブルを透過的に同期したいと思います。私の考えは、ソースデータベーステーブルに挿入、更新、削除のトリガーを作成し、dblinkを使用してdestにデータを複製することです。データベーステーブルをシームレスに。

問題は、ソーステーブルの変更が常にトランザクション内で行われることです。トリガーは、宛先の変更を自動的に複製します。テーブルですが、ソーストランザクションがdestにロールバックされた場合。テーブルの変更はありません。

2つのデータベース間でトランザクションの開始とコミット/ロールバックを自動的に同期する方法はありますか?トリガーのような動作が理想的です。

4

2 に答える 2

1

はい、それは年齢から可能です-Slony-Iまたは他のトリガーベースのレプリケーションを使用します。

行の更新は「マスター」側の特別なテーブルに記録され、「スレーブ」側で非同期に再生されます。

外部プログラム/デーモンは、変更を同期するために使用されます。

詳細については、 http://www.postgresql.org/docs/current/static/different-replication-solutions.htmlおよびhttp://wiki.postgresql.org/wiki/Replication,_Clustering,_and_Connection_Pooling#Replicationを参照してください。

于 2012-01-18T13:27:57.073 に答える
1

9.3がリリースされたら、http://www.postgresql.org/docs/9.3/static/postgres-fdw.htmlをチェックしてください。外部データベースでトランザクションをロールバックできます。

于 2013-09-05T04:01:22.750 に答える