Ich finde es mühsam, jede Woche Datenbanken sichern zu müssen. Und ich denke auch, dass wöchentliche Backups in tägliche Backups umgewandelt werden sollten. Wenn ich das tun müsste, möchte ich es nicht manuell tun. Wie kann die tägliche Sicherung von PostgreSQL-Datenbanken am besten automatisiert werden?
22
Antworten:
So wie bei jeder anderen sich wiederholenden Aufgabe, die automatisiert werden kann: Sie schreiben ein Skript, um die Sicherung durchzuführen, und richten dann einen Cron-Job ein, um ihn auszuführen.
ein Skript wie das folgende zum Beispiel:
(Hinweis: Es muss als postgres-Benutzer oder jeder andere Benutzer mit denselben Berechtigungen ausgeführt werden.)
BEARBEITEN:
pg_dumpall -D
Schalter (Zeile 27) ist veraltet und wird jetzt durch--column-inserts
https://wiki.postgresql.org/wiki/Deprecated_Features ersetzt
quelle
DBS=$($PSQL -l -t | egrep -v 'template[01]' | awk '{print $1}' | egrep -v '^\|' | egrep -v '^$')
Nachladen mit
oder
Verwenden Sie
split
. Mit demsplit
Befehl können Sie die Ausgabe in Teile aufteilen, deren Größe für das zugrunde liegende Dateisystem akzeptabel ist. Zum Beispiel, um Stücke von 1 Megabyte zu machen:Nachladen mit
Du könntest einen von denen reinwerfen
/etc/cron.hourly
Quelle: http://www.postgresql.org/docs/8.1/interactive/backup.html#BACKUP-DUMP-ALL
quelle
split -C
, damit eine Zeile niemals geteilt wird. Das Debuggen einer fehlgeschlagenen Wiederherstellung ist einfacher.Welche Befehle Sie auch "von Hand" ausgeben, - schreiben Sie sie in das Skript und rufen Sie dieses Skript in cron oder einem anderen von Ihnen verwendeten Scheduler auf.
Sie können das Skript natürlich ausgefallener gestalten, aber im Allgemeinen denke ich, dass Sie es schaffen werden - beginnen Sie einfach und verfeinern Sie es später.
Einfachstes mögliches Skript:
Speichern Sie es unter /home/randell/bin/backup.sh und fügen Sie es zu cron hinzu:
quelle
Wenn Sie einen gesamten Cluster mit minimaler Systemlast sichern möchten, können Sie einfach das Stammverzeichnis des postgresql-Clusters tarieren. beispielsweise:
Das ist der Großteil meines Backup-Skripts.
quelle
Für den Fall, dass jemand seine Postgres auf einem Windows-Rechner ohne die Hilfe von Cygwin usw. sichern muss, habe ich eine Batch-Datei, die den Job ziemlich gut macht.
Dadurch werden die Datenbanken jeden Tag in einzelne Dateien in einem eigenen Verzeichnis gesichert
quelle