PostgreSQL Backup und Dokumentation
Da ich ja eigentlich fürs Studium arbeiten müsste, finden sich natürlich zur Gedankenzerstreuung immer wieder Dinge, die man mal eben nebenbei erledigen kann. So kam mir meine PostgreSQL Datenbank zwischen die Finger, die bis jetzt ohne Backup lief. Das ist natürlich kein Zustand, gerade da ich so im Frühjahr bei einem Festplattencrash fast die darin enthaltenen Daten verloren hätte. Es musste dringend gehandelt werden. Also habe ich mal kurz ein Backupskript für PostgreSQL geschrieben:
#!/bin/sh
export PGPASSWORD=geheim
export PGUSER=benutzer_der_alles_darfecho „Backup Postgres-Databases:“
echo “ removing old postgres backups“
rm -rf /var/backup.d/pgsql
echo “ re-creating postgresql backup dir“
mkdir -p /var/backup.d/pgsql# Wohin sollen die ganzen Backups geschrieben werden?
cd /var/backup.d/pgsql# Bereinigte Liste der Datenbanken erzeugen
DBASELIST=`mktemp`
psql -t -h localhost -l | awk ‚{print $1}‘ | sort >$DBASELISTfor db in `cat $DBASELIST`; do
echo „Database: $db save“;
pg_dump -D -h localhost $db | gzip > $db.sql.gz
done;
Vielleicht kann es jemand gebrauchen
Daneben bin ich auch auf ein Tool gestoßen, mit dem man sich aus vorhandenen Datenbanken Dokumentation in Form von Diagrammen, Beschreibene HTML-Dateien, etc erstellenlassen kann: PostgreSQL Autodoc.
Auf den Befehl
postgresql_autodoc -d „DBName“ -u markus –password
folgt die Ausgabe
Producing DBName.dia from /usr/share/postgresql-autodoc/postgresql_autodoc/dia.tmpl
Producing DBName.dot from /usr/share/postgresql-autodoc/postgresql_autodoc/dot.tmpl
Producing DBName.html from /usr/share/postgresql-autodoc/postgresql_autodoc/html.tmpl
Producing DBName.neato from /usr/share/postgresql-autodoc/postgresql_autodoc/neato.tmpl
Producing DBName.xml from /usr/share/postgresql-autodoc/postgresql_autodoc/xml.tmpl
Producing DBName.zigzag.dia from /usr/share/postgresql-autodoc/postgresql_autodoc/zigzag.dia.tmpl
und die jeweiligen Dateien sind enthalten. Dabei kann man durch Templates auch den Export in ein beliebiges anderes Format automatisieren.
Aus der .dot Datei kann man mit GraphViz und dem Befehl
dot -Tpng -o DBDiagram.png DBName.dot
Auch die angesprochenen übersichtlichen Diagramme erstellen.
Sehr praktisch, gerade bei Projekten die man schon eine Weile von-Zeit-zu-Zeit mal weiterentwickelt oder falls man sich zu einer Fremdanwendung mal die Datenbank veranschaulichen möchte.
Am 23. August 2008 um 11:59 Uhr
Moinsen,
Da ich eigentlich auch was für die Uni machen müsste, habe ich natürlich auch Zeit, mir Gedanken über wichtigere Sachen zu machen.
Hab nur eine kleine Anmerkung zu deinem Script:
Vielleicht wäre es besser, wenn du das pgsql Verzeichnis nicht erst löscht und dann versuchst die Datenbanken zu sichern. Wenn dann bei der Sicherung was fehlschlägt, hast du sowohl deine alten Backups gelöscht und keine aktuellen erstellt. Ich persönlich finde es immer eine gute Möglichkeit, wenn man das Backup in ein neues Verzeichnis mit dem aktuellen Timestamp schreiben lässt.
Für MySQL kann ich auch AutoMySQLBackup empfehlen:
http://sourceforge.net/projects/automysqlbackup/
just my 2 cents
Chris
Am 23. August 2008 um 12:39 Uhr
Oh, da hast Du natürlich recht. ich hab vergessen zu schreiben, dass die so erstellten Archive dann in ein rollierendes, übergeordnetes Backup aufgenommen werden. So liegen die dann a) auf einer anderen Maschine und sind b) verfügbar, wenn später oder beim nächsten Backup etwas schief geht.
Stimmt, für MySQL ist das skript oben sehr nett, kannte ich auch, hatte ich nur verdrängt =) Könnte man eigentlich auch gerade für Postgres anpassen. Aber jetzt hab ich ja erstmal nen Skript…
Grüße!
Am 10. April 2009 um 00:31 Uhr
[…] recorded first by ps1160 on 2009-02-26→ PostgreSQL Backup und Dokumentation […]