In dieser Anleitung erfahrt Ihr wie man auf Debian PostgreSQL Major Upgrades durchführt.
Prüfung der installierten Versionen
Als erstes prüfen wir welche PostgreSQL Versionen bereits installiert sind:
1 |
dpkg-query -l postgresql* |
Dies sieht dann z.B. so aus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-===============================================================-====================================-====================================-==================================================================================================================================== un postgresql-7.4 (no description available) un postgresql-8.0 (no description available) un postgresql-9.1 (no description available) ii postgresql-9.4 9.4.15-0+deb8u1 amd64 object-relational SQL database, version 9.4 server un postgresql-client (no description available) ii postgresql-client-9.4 9.4.15-0+deb8u1 amd64 front-end programs for PostgreSQL 9.4 ii postgresql-client-common 181+deb9u1 all manager for multiple PostgreSQL client versions ii postgresql-common 181+deb9u1 all PostgreSQL database-cluster manager ii postgresql-contrib-9.4 9.4.15-0+deb8u1 amd64 additional facilities for PostgreSQL un postgresql-doc-9.4 (no description available) |
In diesem Fall haben wir also nur PostgreSQL 9.4 installiert.
Zum installieren der neusten Version haben wir 2 Möglichkeiten.
Option 1: Installation aus den Debian Sources
Wählen wir diese Option wird PostgreSQL direkt aus den Debian Sources installiert.
Dies hat den Vorteil das wir die Version bekommen die stabilste Version für die aktuelle Debian Distribution bekommen.
Der Nachteil hierbei liegt darin das es sich ziemlich sicher nicht um die aktuellste Version handelt.
Zuerst suchen wir welche Versionen uns zur Verfügung stehen:
1 2 |
apt-cache search postgresql- apt-cache search postgresql-client- |
Vor allem beim zweiten Befehl sehen wir es am besten welche Version die neuste ist.
Die gleiche Version muss es auch als Server geben.
1 2 3 |
postgresql-client-9.6 - front-end programs for PostgreSQL 9.6 postgresql-client-common - manager for multiple PostgreSQL client versions postgresql-client-9.4 - front-end programs for PostgreSQL 9.4 |
In unserem Fall ist also PostgreSQL 9.6 die aktuellste.
Jetzt gehts ans installieren von Client und Server:
1 |
sudo aptitude install postgresql-9.6 postgresql-client-9.6 |
Option 2: Installation aus den PostgreSQL Sources
siehe Tecadmin
Upgrade
Aktuell sollten 2 Versionen von PostgreSQL laufen, dies prüfen wir mit pg_lsclusters:
1 |
pg_lsclusters |
1 2 3 |
Ver Cluster Port Status Owner Data directory Log file 9.4 main 5432 online postgres /postgre-databases /var/log/postgresql/postgresql-9.4-main.log 9.6 main 5433 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log |
In unserem Fall haben wir die alte Version 9.4 und die eben installierte Version 9.6 laufen.
Ebenfalls sehen wir hier das die Version 9.4 nicht das Default Data Directory (/var/lib/postgresql/$version/) konfiguriert hat.
Vermutlich wollen wir auch die neue Version mit diesem Data Directory betreiben.
Für die Migration müssen wir als erstes den neuen Cluster eliminieren:
1 |
sudo pg_dropcluster 9.6 main --stop |
Wenn wir jetzt erneut pg_lsclusters ausführen darf nur mehr der alte Cluster laufen.
Bitte nicht darauf vergessen das währen der Migration der doppelte Speicherplatz für die Datenbank benötigt wird.
Diesen migrieren wir nun in die neue Version:
1 |
sudo pg_upgradecluster 9.4 main /psql-databases/9.6 |
Sollte uns das Default Data Dir ausreichen ist der Pfad am Ende des Befehls nicht nötig.
Wenn das Upgrade durch ist prüfen wir erneut die Clusters:
1 |
pg_lsclusters |
Hier sehen wir das der neue den alten Port übernommen hat und das sich der alte Cluster im Status „down“ befindet.
1 2 3 |
Ver Cluster Port Status Owner Data directory Log file 9.4 main 5433 down postgres /postgre-databases /var/log/postgresql/postgresql-9.4-main.log 9.6 main 5432 online postgres /psql-databases/9.6 /var/log/postgresql/postgresql-10-main.log |
Jetzt ist es soweit alles durchzutesten.
Sollte alles OK sein löschen wir den alten Cluster und deinstallieren die Packete:
1 2 |
sudo pg_dropcluster 9.4 main sudo apt-get --purge remove postgresql-client-9.4 postgresql-9.4 |
Falls pg_dropcluster nicht funktioniert weil das Data Dir noch gesperrt ist muss Debian einmal durchgestartet werden.
Autostart
Damit der neue Cluster auch automatisch startet muss das start.conf File der neuen Version angepasst werden.
1 |
sudo vi /etc/postgresql/9.6/main/start.conf |
Hier haben wir „auto„, „manual“ oder „disabled“ zur Verfügung.
Logischerweiße tragen wir hier „auto“ ein und starten den Rechner neu.
Jetzt sollte der neue Cluster automatisch gestartet werden 🙂