PostgreSQL Datenbank Dump
In meinem neuen Unternehmen arbeiten wir nur noch mit PostgreSQL Datenbanken. Für ein aktuelles Projekt haben wir jetzt in die Backup Strategie natürlich auch den Dump der jeweiligen Datenbank mit aufgenommen. Im folgenden will ich kurz erklären, wie es schnell unter Linux mit Cron zu lösen ist.
Dazu legen wir eine Datei an, mit dem Name db_backup.sh
.
Diese sollte dann die folgenden Rechte gesetzt bekommen:
chmod 700 db_backup.sh
Grund hierfür ist, dass wir in die Datei, das Passwort des jeweiligen DB Nutzers ablegen müssen.
Als nächstes kommen wir zum Inhalt:
#!/bin/bash
date=$(date +%Y-%m-%d-%H-%M)
export PGPASSWORD=PasswortVomNutzerTest
/usr/bin/pg_dump -C -f /opt/backup/dumps/${date}_postgres_dump_churchevents.dmp --encoding=UTF-8 -U Test
find /opt/backup/dumps -mtime +5 -exec rm {} \;
Okay, gehen wir Zeile für Zeile durch
date=$(date +%Y-%m-%d-%H-%M)
Wir legen einen Variabel mit dem Namen date
fest, die einen String aus dem aktuellen Datum und Uhrzeit beinhaltet.
export PGPASSWORD=PasswortVomNutzerTest
In dieser Zeile legen wir das Passwort vom Nutzer Test
fest, was als Umgebungsvariable übergeben wird.
Jetzt kommen wir zum eigentlichen Sicherungsbefehl:
/usr/bin/pg_dump -c -C -f p /opt/backup/dumps/${date}_postgres_dump.sql --encoding=UTF-8 -U Test
- -c enthält im Dump eine Passage, was beim importieren die bereits vorhandene DB löscht und alles neu anlegt
- -C enthält im Dump eine Passage, mit CREATE TABLE Statments
- -f Speicherort des Dumps (das p bedeutet Plaintext, also SQL)
- —encoding ist glaube ich klar :–)
- -U Angabe des Datenbankbenutzers, hier
Test
Und als letztes ein Befehl der alle Dumps älter als 5 Tage löscht:
find /opt/backup/dumps -mtime +5 -exec rm {} \;
Jetzt legen wir noch den jeweiligen Cronjob an und das wars.
Alle Datenbanken sichern
Um alle Datenbank zu sichern, gibt es den Befehl pg_dumpall
:
pg_dumpall -U postgres > /opt/backup/all.sql
Hier wird der Benutzer postgres
verwendet, was der Default Admin Nutzer ist. Entsprechend sein Passwort muss verwendet werden.
Dokumentation
Weitere Hilfe könnt ihr auch in der Dokumentation finden.