Configurar la replicación síncrona con quorum (ANY) o prioridad (FIRST)
PostgreSQLReplicaciónComando
-- 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;Qué hace
Define qué standbys deben confirmar antes de que se complete un commit: ANY N se basa en quorum (sync_state = quorum), FIRST N hace síncronos (sync) los primeros N standbys conectados en el orden de la lista y deja el resto como standbys en espera (potential). El nivel de confirmación lo fija synchronous_commit (remote_write, on, remote_apply).
Cuándo usarlo
En sistemas que exigen no perder datos en un failover (RPO = 0); con varios standbys se prefiere ANY para que el fallo de un solo standby no detenga las escrituras.
Precaución
Si no está conectado el número necesario de standbys síncronos, los commits se quedan colgados sin error y la aplicación se congela. Los nombres de la lista deben coincidir con el application_name de los standbys. En una emergencia, una sola sesión puede saltárselo con SET synchronous_commit = local. Con Patroni, gestiónelo con synchronous_mode en lugar de configurarlo manualmente.