Wie behandelt die Streaming-Replikation von Postgres 9.2 Schemaänderungen und die anfängliche Einrichtung der Tabelle?

8

Ich möchte eine Sicherungsdatenbank auf dem physischen Server einrichten, die sich direkt unter meinem primären physischen Datenbankserver befindet. Ich verwende Postgres 9.2 und möchte die synchrone Streaming-Replikation (aus Gründen der Atomizität) verwenden, bin mir jedoch nicht bewusst, wie Dinge wie A) die anfängliche Tabelleneinrichtung von Server 1 auf Server 2 übertragen werden (z. B. ich laufe) syncdbvon meiner Django-App, die eine Reihe von Tabellen auf Server 1) erstellt, und B), wie fortgesetzte Schemaänderungen von Server 1 zu Server 2 übertragen werden (z. B. führe ich eine Django South-Migration durch, die ALTER TABLEAbfragen sendet und / hinzufügt) Entfernen von Indizes usw.). Werden diese Dinge bei der Streaming-Replikation transparent behandelt, oder muss ich etwas tun, um diese Änderung auf beiden Servern zu beeinflussen?

Orokusaki
quelle

Antworten:

14

Wenn Sie die integrierte Streaming-Replikation von PostgreSQL verwenden möchten, legen Sie dem Replikat eine Basissicherung zu - eine Kopie der ursprünglichen Datenbank auf Dateisystemebene. Es sind also bereits alle Tabellen und Daten vom Master vorhanden. pg_basebackupwird normalerweise dafür verwendet.

Die Streaming-Replikation liest Änderungen auf Blockebene aus den Write-Ahead-Protokollen, sodass die Datenbanken physisch gleich bleiben. Da DDL genau wie DML in der WAL aufgezeichnet wird, werden DDL und DML beide transparent repliziert.

Weitere Informationen finden Sie in der Dokumentation zu HA und Replikation in PostgreSQL .

Craig Ringer
quelle