it-swarm.com.de

Erzeugt das Ausführen von pg_dump auf einer Live-Datenbank konsistente Sicherungen?

Ich habe eine 3-GB-Datenbank, die ständig geändert wird, und ich muss Backups erstellen, ohne den Server anzuhalten (Postgres 8.3).

Mein pg_dump läuft 5 Minuten. Was ist, wenn die Daten während des Vorgangs geändert werden? Erhalte ich konsistente Backups? Ich möchte nicht herausfinden, wann eine Katastrophe eintritt.

Postgres-Dokumentation http://www.postgresql.org/docs/8.3/static/app-pgdump.html sagt nichts darüber aus.

38
Roman

Aus dem Handbuch :

Es werden konsistente Sicherungen erstellt, auch wenn die Datenbank gleichzeitig verwendet wird.

Ja, Sie können dem Backup vertrauen. Natürlich ist es PostgreSQL, Sie können Ihren Daten in PostgreSQL vertrauen.

56
Frank Heikens

pg_dump startet eine Transaktion, ähnlich wie jede andere lang laufende Abfrage. Die Konsistenzgarantien dort stammen von MVCC-Implementierung . Der Speicherauszug ist innerhalb dieser Regeln immer selbstkonsistent.

In allen unscharfen Teilen von MVCC geht es darum, welche Reihenfolge UPDATE-Transaktionen für andere Clients sichtbar werden und wie die Sperren erworben werden. pg_dump ist streng in Bezug auf die Reihenfolge und erwirbt eine Lesesperre für die gesamte Datenbank, um sie zu sichern. Für die meisten Menschen ist dies das, was sie erwarten, und der verwendete Mechanismus verursacht niemals Probleme. Das Hauptrisiko der Parallelität besteht darin, dass Clients, die versuchen, die Datenbankstruktur zu ändern, blockiert werden, während der Speicherauszug ausgeführt wird. Dies hat jedoch keinen Einfluss auf die Qualität des Dumps.

12
Greg Smith

Der Speicherauszug beginnt mit der Einstellung TRANSACTION ISOLATION LEVEL SERIALIZABLE.

Bitte lesen Sie das Handbuch zu Transaction Isolation und zum Beispiel die ser List Diskussion daz .

Zitat:

In der Sicherung werden nur Transaktionen angezeigt, die festgeschrieben wurden, bevor die Isolationsstufe festgelegt wurde.

Grundsätzlich alles nach pg_dump legt fest, dass die Transaktionsisolationsstufe nicht Teil dieses Speicherauszugs ist.

Die Lese-/Schreibvorgänge sind während dieser Zeit nicht betroffen (gesperrt).

12
Dennis Nolte