Zum Hauptinhalt springen
  1. Braindump/

PostgreSQL-Datenbanken sichern

1 min
Marcel Ryser
Autor
Marcel Ryser
Softwarearchitekt und Tech-Enthusiast aus Bern

Vor dem Upgraden oder Verändern von Datenbanken empfiehlt es sich, zuerst ein Backup anzulegen. Der Befehl pg_dumpall schreibt alles in eine einzige Plain-Datei. Das ist etwas old-school, seit es das flexiblere Custom-Format für Backups gibt.

Mein Ziel ist eine Custom-Format-Datei pro Datenbank.

psql -AtU postgres -c "SELECT datname FROM pg_database WHERE NOT datistemplate"| \
while read f; 
   do pg_dump -Upostgres --format=c --file=$f.sqlc $f;
done;

Das erzeugt einen Custom-Format-Dump pro Datenbank. Damit kannst du jede Datenbank einzeln wiederherstellen.

pg_restore -d postgres --clean --create db.sqlc

--clean löscht eine bestehende Datenbank gleichen Namens und --create legt dieselbe Datenbank wie im Backup an.

Wenn du alles auf einmal wiederherstellen willst, ist pg_dumpall vielleicht besser für dich geeignet.