私の会社では、PostgreSQLインスタンスを別のデータベースに複製する代替手段を探しています。このシナリオでは、本番 PostgreSQL 9.5データベースサーバーがあり、新しいエントリが常に入ってくるであり、それらをレプリカサーバーに同期する必要があります。
しかし、いくつかの課題に直面しています。
私たちはいくつかの解決策を調査し、さらに 独自に書いた ですが、レプリカに一貫性の問題(つまり、いくつかの失敗したパッチ)と、複製に失敗したいくつかのALTER TABLE
sがあります。 。ソースコードでこれらの問題を分離して修正する方法はまだわかっていません。
すべての状況を踏まえて、代替案を調査しており、同様の問題を抱えている人々からの連絡をお待ちしています。
この問題を徹底的に調査した後、AWS独自の データベース移行サービス を採用しました。本番ソースインスタンスからターゲットの運用レプリカへのCDCレプリケーションが可能になりました。両方のPostgreSQLインスタンスです。運用レプリカでは、他のタイプのデータを複製することもできます。
また、MySQL、S3、RedShift(これも使用)などの他のタイプのターゲットにも複製できるという利点もあります。
欠点はAWSエコシステムに関連付けられていることですが、他のすべてのものはすでにAWSにあるため、このユースケースでは問題ありませんでした。 AWSで実行する必要があるのはDMSとRDSのみであることに注意してください。ターゲットのPostgreSQLインスタンスはAWSの外部でホストできます。
pglogical 拡張は、問題を解決するために使用できると思います。将来的には、レプリケーションユーザーを許可するように拡張されます。 現在、スーパーユーザー権限が必要です。
pglogicalは、PostgreSQLの拡張機能として完全に実装された論理レプリケーションシステムです。
また、彼らの documentation から:
完全に統合されているため、トリガーや外部プログラムは必要ありません。この物理レプリケーションの代替手段は、選択的レプリケーションのパブリッシュ/サブスクライブモデルを使用してデータをレプリケートする非常に効率的な方法です。
サポートされるユースケースは次のとおりです。
- メジャーバージョン間のアップグレード(上記の制限がある場合)
- 完全なデータベース複製
- レプリケーションセットを使用したテーブルセットの選択的レプリケーション
- 複数の上流サーバーからのデータ収集/マージ