Senkron replikasyonu quorum (ANY) veya öncelik (FIRST) ile ayarla
PostgreSQLReplikasyonKomut
-- Quorum: listedeki herhangi 1 standby onaylayınca commit tamamlanır
ALTER SYSTEM SET synchronous_standby_names = 'ANY 1 (stby_a, stby_b)';
-- Öncelik bazlı: listede ilk sıradaki bağlı standby senkron, diğerleri 'potential'
-- ALTER SYSTEM SET synchronous_standby_names = 'FIRST 1 (stby_a, stby_b)';
SELECT pg_reload_conf();
SELECT application_name, state, sync_state, sync_priority FROM pg_stat_replication ORDER BY application_name;Ne yapar?
Commit'in hangi standby'lardan onay beklendikten sonra tamamlanacağını belirler: ANY N quorum tabanlıdır (sync_state = quorum), FIRST N listedeki önceliğe göre ilk N bağlı standby'ı senkron (sync), kalanları yedek (potential) yapar. Onay seviyesi synchronous_commit ile belirlenir (remote_write, on, remote_apply).
Ne zaman kullanılır?
Failover'da veri kaybı olmaması (RPO = 0) gereken sistemlerde; birden çok standby varken tek bir standby arızasının yazmaları durdurmaması için ANY tercih edilir.
Dikkat
Gerekli sayıda senkron standby bağlı değilse commit'ler hata vermeden askıda kalır, uygulama donar. Listedeki adlar standby'ların application_name değeriyle eşleşmelidir. Acil durumda tek bir oturum için SET synchronous_commit = local ile atlanabilir. Patroni altında bu parametreyi elle değil synchronous_mode ile yönet.