Automatische Postgres-Sicherung

20

Was ist der beste Weg, um eine Postgres-Datenbank unter Linux jeden Tag automatisch zu sichern?

Liam
quelle

Antworten:

11

Sie können pg_dumpwie folgt verwenden:

$ pg_dump -h db_host -U user_name db_name > dump_file.sql

Denken Sie bitte zuerst daran, die .pgpassDatei festzulegen, die Passwörter enthält, die verwendet werden sollen, wenn für die Verbindung ein Passwort erforderlich ist. Diese Datei sollte Zeilen des folgenden Formats haben:

hostname:port:database:username:password

Und jedes der ersten vier Felder kann ein Literalwert oder ein * sein, der mit irgendetwas übereinstimmt. Zum Beispiel: *:*:*:postgres:pg_password.

Diese .pgpassDatei muss sich im Home-Verzeichnis ~ / befinden und die Berechtigungen dafür müssen jeglichen Zugriff auf die Welt oder die Gruppe verbieten. erreichen Sie dies durch den Befehl chmod 0600 ~/.pgpass.

Ali Mezgani
quelle
Sichert es jeden Tag automatisch?
Anuj Patel
@indyaah: nein, das müsstest du täglich von cron (oder ähnlichem) ausführen.
Bill Weiss
12

Führen Sie pg_dumpall von cron aus.

Bill Weiss
quelle
7
pg_dumpall ist besser als die anderen Antworten, da hierdurch Ihre globalen Datenbankobjekte gesichert werden. (Bsp .: Benutzer usw.) Sie benötigen diese, um Ihre Datenbank vollständig wiederherzustellen, und wenn Sie über eine große Anzahl von diesen verfügen, kann es nicht trivial sein, sie erneut zu erstellen. Pg_dumpall kann jedoch zu viel für Sie bedeuten, wenn Sie nur eine einzelne Datenbankinstanz in einem Cluster mit mehreren Datenbanken sichern möchten, da pg_dumpall jede Instanz sichert . Also ... wie bei den meisten technischen Fragen und Antworten kommt es darauf an.
KevinRae
1
Ich neige dazu, "Datenbank" und "Datenbankserver" zu verschmelzen, was ein gutes Beispiel ist. Ich ging davon aus, dass das Poster die ganze Sache gut untermauern möchte.
Bill Weiss
6

Versuchen Sie AutoPostgreSQLBackup . Es handelt sich um eine einzelne Skriptdatei, die einfach an Ihre Anforderungen angepasst werden kann, tägliche, wöchentliche und monatliche Planung, Protokolle per E-Mail, Protokolldatei oder Standardausgabe usw. ausführt.


quelle
Ich benutze auch AutoPostgreSQLBackup und es funktioniert sehr gut für mich ;-)
Matthieu
4

Wenn es sich um eine relativ kleine Datenbank handelt und die Sicherung nur einmal am Tag ausgeführt werden muss, führen Sie einfach pg_dump von cron aus, um einen Speicherauszug in eine lokale Datei zu erstellen, und speichern Sie die Dateien auf dem Computer, um den Speicherauszug zu archivieren .

Magnus Hagander
quelle
4

pg_rman ist ein neues Tool, das inkrementelle Backups anbietet und für PostgreSQL 8.4 oder höher funktioniert.

Adam Matan
quelle
2

Versuchen Sie es mit Astrails-Safe . Es kann mysql (mysqldump), postgres (pg_dump) oder nur einfache Dateien (tar) mit Verschlüsselung (gnupg) sichern und auf S3 / Sftp hochladen.

Vitaly Kushner
quelle
1

Dies ist ein Skript, das jede Datenbank einzeln sowie die oft vergessenen, aber wichtigen PostgreSQL-GLOBALS und Benutzeranmeldeinformationen sichert.

Wichtig dabei ist, die Komprimierung zu nutzen, die pg_dumpall nicht bietet, und die vergessenen Daten, die pg_dump ignoriert.

Dies erfordert einen PGPass oder ein ähnliches Setup wie hier beschrieben: http://wiki.postgresql.org/wiki/Pgpass

Dies ist ein Setup für OSX, aber ändern Sie einfach die Programmpfade und es wird gut funktionieren.

Sichert bis / sqlbackups Das Skript gibt die Verzeichnisgröße / das Verzeichnis zurück und verfügt über Haltepunkte, die einen Status ungleich Null zurückgeben, wenn dies fehlschlägt. Ich habe es in Kombination mit pgAgent verwendet, um tägliche Backups zu erstellen.

Skript überarbeitet, tut mir leid :(

Silberfeuer
quelle
1

Warum sollten Sie sich mit einem täglichen Backup abfinden, wenn Sie mit dem Barmann problemlos eine Wiederherstellung zu einem bestimmten Zeitpunkt durchführen können ?

Giovanni Toraldo
quelle
Ich werde die Moderatoren entscheiden lassen, aber ich glaube, dass es hier eine schlechte Form ist, 5 Jahre alte Fragen wiederzubeleben, um kommerzielle Produkte zu integrieren.
gparent
hm, es ist open source: sourceforge.net/projects/pgbarman/files
Giovanni Toraldo
Du hast recht, ich habe das Falsche gegoogelt. Mein Hauptanliegen war nicht, dass es darum ging, eine Antwort vorzuschlagen, die der Benutzer 5 Jahre später nicht wirklich gefragt hatte. Nachdem sie die anderen Antworten gelesen haben, scheinen sie jedoch auch ähnliche Backup-Lösungen vorzuschlagen, daher denke ich, dass es nicht so schlimm ist. Meine Flagge wird wahrscheinlich abgelehnt und wir werden es einen Tag nennen: D
gparent 16.10.14