Configurer la réplication synchrone par quorum (ANY) ou par priorité (FIRST)
PostgreSQLRéplicationCommande
-- Quorum: commit completes once any 1 standby in the list confirms
ALTER SYSTEM SET synchronous_standby_names = 'ANY 1 (stby_a, stby_b)';
-- Priority based: the first connected standby in the list is sync, the others '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;Ce que fait la commande
Définit quelles standbys doivent confirmer avant qu'un commit se termine : ANY N est basé sur un quorum (sync_state = quorum), FIRST N rend synchrones (sync) les N premières standbys connectées dans l'ordre de la liste et les autres en attente (potential). Le niveau de confirmation est défini par synchronous_commit (remote_write, on, remote_apply).
Quand l'utiliser
Sur les systèmes qui n'admettent aucune perte de données lors d'un failover (RPO = 0) ; avec plusieurs standbys, ANY est préférable pour qu'une seule standby défaillante n'arrête pas les écritures.
Attention
Si le nombre requis de standbys synchrones n'est pas connecté, les commits restent bloqués sans erreur et l'application se fige. Les noms de la liste doivent correspondre à l'application_name des standbys. En urgence, une session peut le contourner avec SET synchronous_commit = local. Sous Patroni, gérez cela avec synchronous_mode plutôt qu'à la main.