Automatische Postgres-Sicherung


20

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

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.


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.


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.


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 .



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.



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 :(


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 ?


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


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.