本当に必要なのは、PostgreSQL9.4の
コメントでAWSRDSを使用していると述べたので、現時点では運が悪いです。これは、執筆時点でRDSがデコードプラグインを提供しておらず、それらをインストールするにはスーパーユーザー権限が必要になるためです。
PostgreSQLではダーティ読み取りを実行できないため、xminとxmaxを使用して完全な増分コピーを行うことはできません。そのため、タプルがDELETE
であるかどうかを確認できません。 d。トランザクションIDを使用するには、VACUUM
を防止する必要があります 「デッド」行、つまり現在のトランザクションがまだ正しく実行する必要がない行を削除することから。また、ダーティリードを実行できる必要があります。どちらもPostgreSQLで簡単な解決策はありません。
挿入専用テーブルがある場合 (または、挿入と更新を行い、削除せず、行の主キーを変更しない)場合は、トランザクションxminを使用できます。 トランザクションIDラップアラウンド
に対処する必要があります pg_database.datfrozenxid
を確認する およびpg_class.relfrozenxid
興味のある関係のために。詳細については、ソースコードとコード内のコメントを参照してください。 VACUUM
また、エントリを削除しない場合は、「消失した」行を表示する必要がないため、ダーティリードがなくても問題はありません。
可能であれば、9.4以降で論理デコードを使用してください。古いバージョンでは、完全なレプリケーションが必要な場合は、トリガーを使用して変更キューを蓄積する必要があります。
削除と主キーの変更を完全に禁止できる場合は、xmin
を使用できます。 delete
がないことを確認する限り、変更された行を検索します s実行、または任意のupdate
primary key
を変更する s。