web-dev-qa-db-ja.com

PostgreSQLでの部分的な(フィルターされた)レプリケーション

私のセットアップは次のようになります。プライマリサーバー(Postgres 9.6)を使用しており、Webから大量のデータを継続的にこすり落としています。テーブルまたはデータベースのサブセットをプライマリからセカンダリインスタンスにストリーミングして、Webアプリからデータを読み取れるようにしたいのですが。 Webアプリは、データベース(ユーザーアカウントのテーブルの読み取り/書き込み、認証の実行など)を使用して標準のWebアプリの処理を実行し、レプリケートされたデータに対してクエリを実行できる必要があります。

ホットスタンバイを使用したスト​​リーミングレプリケーション それは私の路地にあるように見えましたが、 数年前からのReddit応答 は、特定のテーブルをフィルタリングできないことを示唆しているようですまたはレプリケートされたクラスターに書き込みます。インターネットをざっと見ていると、ほとんどの人がこの問題をBucardoやSlonyのようなサードパーティのツールで解決しているようです。私はそれを受け入れていますが、できるだけ簡単な解決策を探し、専用のレプリケーションシステムを私のスタックは不必要に激しいようです。 このSO昨年の質問 は、論理デコードを使用して有望なリードを持っていたため、その方向に新しい作業があるかどうか疑問に思います。 Postgresの2つのインスタンスを実行し、それらを異なるポートにバインドするだけで機能します。

サードパーティのツールをインストールする必要のない解決策はありますか?サードパーティのツールが絶対に必要な場合、あなたの経験から、私の目的に対してオーバーヘッドが最も低いツールはどれですか?

よろしくお願いします。ここで最初の質問です。あなたの専門知識にアクセスできることを嬉しく思います。

5
jeancochrane

複数の人が pglogical extension の使用を提案しましたが、これはこのユースケースで本当にうまくいくことがわかりました。

3
jeancochrane