Andreas Bruns

Softwareentwicklung für Oldenburg und Bremen

Datenbank-Update zu PostgreSQL 9.6 + pgAdmin 4

Am Donnerstag ist die Version 9.6 des populären PostgreSQL-Datenbanksystems erschienen. Das passt mir gerade ganz gut, weil ich mein bestehendes PostgreSQL wegen noch nicht unterstützten JSON-Funktionen von der Version 9.4 auf 9.5 migrieren will.

Wer gerade nicht die neusten PostgreSQL-Funktionen nutzt, könnte trotzdem von einem Update profitieren. Gleichzeitig ist nämlich auch das Admin-Werkzeug pgAdmin in der Version 4 mit einem ganz neuen Design erschienen.

pgAdmin 4 - Dashboard

pgAdmin 4 – Dashboard

Falls man die Daten seiner alten Datenbank in die neue Datenbank überführen möchte, dann muss man die auszuführenden Schritte etwas planen. Bei mir sah das so aus:

  • bestehenden Port 5432 der 9.4er-Version ändern
  • die neue 9.6er Version installieren mit Port 5432
  • Datenbank-Daten von bestehender Datenbank zu neuer Datenbank kopieren
  • eventuell alte Datenbank abschalten oder deinstallieren

Wie man sein Datenbanksystem konfiguriert und aktualisiert, hängt von dem Betriebssystem und der zuvor gewählten Installationsmethode ab. Gerade bei dem freien PostgreSQL gibt es einige Methoden – auch für den Mac. Ich hatte mich bei der 9.4er-Version für den „Interactive installer by EnterpriseDB“ entschieden und mich bei der Migration von dieser Stackoverflow-Frage leiten lassen:
How to upgrade PostgreSQL from version 9.4 to version 9.5 without losing data?

1. Bestehenden Port 5432 der 9.4er-Version ändern

  1. PostgreSQL 9.4-Verzeichnis auf Mac mit dem genannten Installer:
    /Library/PostgreSQL/9.4
  2. PostgreSQL 9.4 stoppen:
    sudo -u postgres /Library/PostgreSQL/9.4/bin/pg_ctl -D/Library/PostgreSQL/9.4/data stop
  3. Ports anpassen, z.B. von 5432 auf 5435
    nano /Library/PostgreSQL/9.6/pg_env.sh
    sudo -u postgres nano /Library/PostgreSQL/9.6/data/postgresql.conf
  4. PostgreSQL 9.4 starten:
    sudo -u postgres /Library/PostgreSQL/9.4/bin/pg_ctl -D/Library/PostgreSQL/9.4/data start

2. Die neue 9.6er Version installieren mit Port 5432

Der zugehörige Application Stack Builder ermöglicht es, problemlos weitere Versionen (wie beispielsweise die 9.6er-Version) zu installieren. Es wird automatisch der erste freie Port ab 5432 ausgewählt.

Application Stack Builder

Application Stack Builder

Damit laufen jetzt beide PostgreSQL-Systeme parallel:

ps aux | grep post 
postgres           89   0,0  0,0  2647976   1324   ??  Ss 12:46pm   0:00.19 /Library/PostgreSQL/9.6/bin/postmaster -D/Library/PostgreSQL/9.6/data 
postgres           83   0,0  0,0  2658004   1440   ??  Ss 12:46pm   0:00.45 /Library/PostgreSQL/9.4/bin/postmaster -D/Library/PostgreSQL/9.4/data 

3. Datenbank-Daten von bestehender Datenbank zu neuer Datenbank kopieren

Das Kopieren der Daten können wir entweder komplett für das ganze System mit pg_dumpall oder für einzelne Datenbanken mit pg_dump durchführen.

Kopieren aller Daten in das neue System:

/Library/PostgreSQL/9.6/bin/pg_dumpall -p 5435 -U postgres | /Library/PostgreSQL/9.6/bin/psql -p 5432 -U postgres 

Kopieren der Daten einer Datenbank in das neue System, wobei man zunächst die Benutzer und die Datenbank erstellen muss:

/Library/PostgreSQL/9.6/bin/psql -p 5432 -U postgres -c "CREATE USER my_user"
/Library/PostgreSQL/9.6/bin/psql -p 5432 -U postgres -c "ALTER USER my_user WITH PASSWORD 'my_pw'";
/Library/PostgreSQL/9.6/bin/psql -p 5432 -U postgres -c "CREATE DATABASE my_db WITH OWNER = my_user";
/Library/PostgreSQL/9.6/bin/pg_dump -p 5435 -U postgres -d my_db | /Library/PostgreSQL/9.6/bin/psql -p 5432 -U postgres -d my_db 

Fazit

Damit sollten bestehende Anwendungen weiterhin funktionieren, ohne dass sie etwas von der neuen Datenbank bemerken. Wenn das der Fall ist, dann können wir die alten Datenbanken oder auch das gesamte PostgreSQL 9.4 löschen. Viel Spaß mit den neuen Funktionen von PostgreSQL 9.6 und PgAdmin 4.

Kommentare sind geschlossen.