この質問では、 PostgreSQLでの書き込みの懸念Laurenz Albe は、データがPostgresSQLにコミットされるときにスタンバイサーバーのセットを制御する方法を説明し、それが別の質問を生みました。 N個のスタンバイが必要で、N個のMサブセットに対して同期レプリケーションを有効にしたい場合はどうすればよいですか?ユースケースとしては、コールドバックアップが考えられます。 N-Mサブセットのデータの不整合は気にしません。NスタンバイのMサブセットでそれを必要とするだけです。
はい、
synchronous_standby_names と呼ばれるこの設定があります。
ANY 3 (r1, r2, r3, r4)
のような「少なくとも3つのスタンバイが応答するとすぐにコミットを進める」という式を指定できます
正確なレプリケーション名を指定する場合は、r1,r4
のように名前を付けます。
以下は使用例です。
ALTER SYSTEM SET synchronous_standby_names TO 'ANY 3 (r1, r2, r3, r4)';
SELECT pg_reload_conf();
注:スタンバイ名(r1、r2 ..)は、スタンバイの application_name オプションによって定義されます primary_conninfo 設定値。