Hallo zusammen,
wie versprochen hier die Informationen zum Update des Postgresql Servers.
Disclaimer (wie es im englischen so schön heißt):
Die unten stehende Prozedur hat bei mir problemlos funktioniert und entspricht der empfohlenen Vorgehensweise beim Upgrade des Postgresql-Servers. Ich gebe aber keine Garantien dafür, dass das bei allen so funktioniert (schon gleich gar nicht unter Linux) und übernehme keine Verantwortung für entstandene Schäden oder Datenverluste.
Wem das Ganze zu riskant ist sollte sich an ein Systemhaus wenden.
Wir müssen zwei Szenarien unterscheiden:
1. Einspielen des Patches
Wenn ihr nur eure aktuelle Postgresql-Installation aktualisieren wollt (also z. B. von 9.2.11 auf 9.2.22, von 9.6.1 auf 9.6.4, ...) ist der Aufwand überschaubar. Alle Installationen mit gleicher Haupt- und Nebenversionsnummer (also z. B. 9.2.1, 9.2.2, ...) verwenden das gleiche Programmverzeichnis und können auch das gleiche Datenverzeichnis verwenden. Hier muss man tatsächlich nur folgende Schritte durchgehen:
- Datensicherung von ASV und Notenmanager vornehmen, sicher ist sicher.
- ASV-Dienst stoppen
- Sicherstellen, dass Notenmanager nicht genutzt wird
- Postgresql Server Dienst auf dem Server stoppen
- Installation laufen lassen
- Postgresql Server Dienst auf dem Server wieder starten
- ASV-Dienst starten
Bei mir hat das (Windows Server) wunderbar funktioniert. Das Installationsprogramm erkennt die vorhandene Version, das Datenverzeichnis und den Port und führt das Upgrade durch. Änderungen an den Konfigurationsdateien mussten nicht vorgenommen werden.
2. Upgrade auf eine aktuelle Hauptversion
Wenn ihr von einer älteren Version (9.2, 9.3, 9.4, 9.5) gleich auf die aktuelles Version 9.6.5 upgraden wollt wird es aufwändiger. Diese können bzw. sollten nicht einfach in das gleiche Verzeichnis wie die bestehende Installation gespielt werden und auch nicht das gleiche Datenverzeichnis verwenden.
Folgender Weg hat bei mir funktioniert (ACHTUNG: die folgende Beschreibung gilt für Windows Server, mit Linux kenne ich mich zu wenig aus. Sollte aber im Prinzip ähnlich gehen):
- Neuinstallation von 9.6.5 auf dem gleichen Server. Dabei en anderes Programmverzeichnis wählen (geschieht automatisch) und ein anderes Datenverzeichnis angeben. Als Portnummer habe ich 5433 vergeben (schlägt der Windows-Installer sowieso automatisch vor). Wichtig: als Passwort für den Nutzer "postgres" solltet ihr das gleiche verwenden wie bei der alten Installation. Das verhindert Verwirrungen zwischendurch.
- Kopieren der pg_hba.conf aus dem Datenverzeichnis der alten Installation in das Datenverzeichnis der neuen Installation. WICHTIG: den Dienst für den neuen Postgresql-Server neu starten!
Alter und neuer Datenbankserver laufen jetzt friedlich nebeneinander her, weder ASV noch Notenmanager waren bislang betroffen. Hier kann man durchaus mal einen Tag Pause machen. Dann überspielen wir die Daten.
- Sicherheitshalber den ASV-Dienst stoppen.
- Sicherstellen, dass niemand mit dem Notenmanager arbeitet.
- Eine Eingabeaufforderung öffnen und in das Verzeichnis C:\Program Files\postgresql\9.X\bin der alten Installation wechseln.
- Folgenden Befehl eingeben:
pg_dumpall.exe --host localhost --port 5432 --username "postgres" --role "postgres" --no-password --verbose --file "H:\pgdumpall_9_4.sql"Das Verzeichnis und den Dateinamen könnt ihr natürlich beliebig wählen. Da der Befehl direkt auf dem Server ausgeführt wird werdet ihr normalerweise auch nicht nach dem Passwort für den Benutzer "postgres" gefragt.
- Jetzt in das Verzeichnis C:\Program Files\postgresql\9.6\bin wechseln.
- Dort den Befehl
psql --username=postgres --port=5433 --file="H:\pgdumpall_9_4.sql"
eingeben. Dadurch wird Backup auf den neuen Server gespielt.
- Anschließend mit pgAdmin 4 kontrollieren: neuen Server anklicken und verbinden, gegebenenfalls aktualisieren (rechte Maustaste > Refresh). Es müssten jetzt alle Datenbanken und auch die Benutzer nmuser, nmsvXXXX, ... vorhanden sein.
An der Stelle können wir auf einfache Weise mit dem Notenmanager testen, ob alle gut gegangen ist:
- nmadmin.conf im Programmverzeichnis von NMAdmin öffnen
- In der Zeile "dbserverport =" die 5432 testweise in 5433 ändern (oder halt den Port, den ihr bei der Neuinstallation gewählt habt). Änderungen speichern und NMAdmin starten.
- Wenn das klappt, das gleiche auch mit der nmsv.conf der Schulversion durchführen, sollte genauso funktionieren.
- Anschließend den Port in beiden Dateien wieder auf 5432 stellen.
Jetzt kommt der letzte Teil: alle Clients und auch die ASV suchen den Postgresql Server auf dem Port 5432. Jetzt könnte man entweder die Firewall anpassen und die Konfiguration ändern (ich weiß aber nicht, wie das bei der ASV funktioniert). Alternativ ändern wir die Ports der Postgresql-Server. Der alte wird z. B. auf 5431 umgestellt und der neue dann auf 5432 gesetzt.
- Mit dem Windows Explorer das Verzeichnis C:\Program Files\postgresql\9.X\data der alten Installation öffnen.
- postgresql.conf mit einem Editor öffnen und die Zeile "port = 5432" in "port = 5431" umändern.
- Dienst für den alten Postgresql-Server neu starten
- In das Verzeichnis C:\Program Files\postgresql\9.6\data der neuen Installation wechseln
- Port auf 5432 ändern und Dienst für den neuen Postgresql-Server neu starten
Jetzt müssten sich alle Notenmanager-Clients ohne weitere Änderungen mit der Datenbank verbinden können. Wenn das klappt, den ASV-Dienst wieder starten. ASV-Client starten und testen, ob der Zugriff funktioniert.
Wenn alles läuft: alten Dienst dauerhaft deaktivieren und irgendwann dann mal die alte Installation komplett löschen.
Wenn es Probleme gibt: einfach die Ports der beiden Installationen wieder zurückändern (die letzten 5 Punkte oben) und die Dienste neu starten. Wenn ihr dann einen neuen Versuche vornehmt müsst ihr aber die Datensicherung der alten Installation wieder neu erstellen und wieder in die neue Installation importieren, da ja sicher inzwischen Daten importiert wurden.
Gruß
Stephan
PS: zum jetzigen Zeitpunkt sollte jeder zumindest den Patch einspielen. Nutzer der Postgresql Version 9.2.X müssen aber generell sich um ein Update auf 9.6 kümmern, da der Support für 9.2 in diesem September eingestellt wird:
"The PostgreSQL community will stop releasing updates for the 9.2.X release series in September 2017. Users are encouraged to update to a newer release branch soon." (
https://www.postgresql.org/docs/9.2/stat...-2-23.html)