DBAtlas · Atlas d'exploitation des bases de données

Configurer la réplication synchrone par quorum (ANY) ou par priorité (FIRST)

PostgreSQLRéplication

Commande

-- 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.

Ouvrir dans DBAtlas →

Voir aussi