DBAtlas · Atlas für Datenbankbetrieb

Synchrone Replikation mit Quorum (ANY) oder Priorität (FIRST) konfigurieren

PostgreSQLReplikation

Befehl

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

Was es tut

Legt fest, welche Standbys bestätigen müssen, bevor ein Commit abgeschlossen ist: ANY N ist quorumbasiert (sync_state = quorum), FIRST N macht die ersten N verbundenen Standbys in Listenreihenfolge synchron (sync) und die übrigen zu wartenden Standbys (potential). Die Bestätigungsstufe setzt synchronous_commit (remote_write, on, remote_apply).

Wann einsetzen

Auf Systemen, die beim Failover keinen Datenverlust erlauben (RPO = 0); bei mehreren Standbys wird ANY bevorzugt, damit der Ausfall eines einzelnen Standby die Schreibvorgänge nicht stoppt.

Vorsicht

Ist die erforderliche Anzahl synchroner Standbys nicht verbunden, hängen Commits ohne Fehlermeldung und die Anwendung friert ein. Namen in der Liste müssen dem application_name der Standbys entsprechen. Im Notfall kann eine einzelne Session dies mit SET synchronous_commit = local umgehen. Unter Patroni über synchronous_mode verwalten, statt es manuell zu setzen.

In DBAtlas öffnen →

Verwandte Einträge