DBAtlas · Atlas de operaciones de bases de datos

Configurar la replicación síncrona con quorum (ANY) o prioridad (FIRST)

PostgreSQLReplicación

Comando

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

Abrir en DBAtlas →

Relacionado