mynethome.de

21. August 2008 um 16:08 Uhr

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_darf

echo „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 >$DBASELIST

for 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.

3 Reaktionen zu “PostgreSQL Backup und Dokumentation”

  1. Gravatar Icon Chris

    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

  2. Gravatar Icon Markus

    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!

  3. Gravatar Icon Recent URLs tagged Dokumentation - Urlrecorder

    […] recorded first by ps1160 on 2009-02-26→ PostgreSQL Backup und Dokumentation […]

Einen Kommentar schreiben


Gravatar unterstützt

mynethome.de wird erstellt mit WordPress
Beiträge (RSS) und Kommentare (RSS)

(c) 2005 - 2023 Markus Schlichting - Mastodon