PostgreSQL 14 unter Windows 2022

PostgreSQL ist eines der populärsten und mächtigsten Datenbankmanagementsysteme und zu dem noch Open Source. Dieser Blog-Artikel erklärt die Installation, Konfiguration und das Aktualisieren von PostgreSQL 14 unter Windows Server 2022.

Einführung

PostgreSQL ist ein freies, objektrelationales Datenbankmanagementsystem, das den größten Teil des SQL-Standards abbildet und diesen um einige Erweiterungen ergänzt. Die Open-Source-Lizenz von PostgreSQL ist sehr liberal und entspricht in etwa der MIT-Lizenz. PostgreSQL läuft unter Windows, Linux, macOS sowie weiteren Unix-Derivaten.

Version 14 wurde am 30. September 2021 veröffentlicht und wird das letzte Update am 12. November 2026 erhalten. Die Lebenszyklus beträgt also wie bei älteren Versionen auch fünf Jahre.

Die PostgresSQL-Homepage

Die PostgresSQL-Homepage

In der Tat haben wir nur positive Erfahrungen mit PostgreSQL gemacht und setzen diese Datenbank daher auch in unserem Open-Source-Projekt ENBREA ein. ENBREA ist kompatibel mit PostgreSQL 14.

Installation von PostgreSQL 14

Diskussion

Die einfachste Art und Weise PostgreSQL unter Windows zu installieren ist, sich den MSI-Installer hier herunterzuladen und auszuführen. Ich persönlich ziehe jedoch die manuelle Installation vor, da ich hier die exakte Kontrolle über das habe, was ich wirklich brauche. So möchte ich beispielsweise das Administrationswerkzeug pgAdmin nicht auf dem gleichen Computer installiert haben. Außerdem ist das Aktualisieren von PostgreSQL aus meiner Sicht so transparenter und sicherer.

Dieser Blog-Artikel beschreibt daher auch die manuelle Installation von PostgreSQL per Kommandozeile.

Vorbereitung

Die vorbereitenden Schritte sehen wie folgt aus:

  1. Installiere das Visual C++ 2017 Redistributable Package. Nimm die 64-Bit-Version, also vc_redist.x64.exe.

  2. Lade die aktuellen Windows x64 Binaries (ein Zip-Archiv) für PostgreSQL 14 herunter. Zum Zeitpunkt des Schreibens dieses Artikels ist dies die Version 14.4.

  3. Lege einen Ordner mit Namen C:\Program Files\PostgreSQL an und gib Dir volle Windows-Zugriffsrechte auf diesen Ordner.

  4. Extrahiere das Zip-Archiv nach C:\Program Files\PostgreSQL. Das dauert etwas, also Geduld.

  5. Benenne den neu angelegten Unterordner pgsql um in 14.

  6. Lösche die Ordner pgAdmin 4 und StackBuilder samt ihren Inhalten. pgAdmin können wir separat installieren und StackBuilder wird nicht benötigt.

  7. Lege einen neuen Ordner c:\Workspace\PostgreSQL\14 (dieser Ordner kann natürlich auch anders heissen) und dort die Unterordner data und log an.

  8. Überprüfe die landesspezifischen Einstellungen auf Deinem Windows Server (also Sprache, Region, Zeitzone etc.) und aktualisiere sie bei Bedarf. PostgreSQL nimmt diese Einstellungen als Grundlage bei der Initialisierung einer neuen Server-Instanz.

Initialisierung

Alles ist vorbereitet, Du kannst nun einen neuen Datenbank-Cluster initialisieren. Ein Datenbank-Cluster umfasst alle Datenbanken, die von einer einzelnen PostgreSQL-Server-Instanz verwaltet werden.

Öffne Die Windows-Kommandozeile als Administrator und führe folgenden Befehl aus:

"C:\Program Files\PostgreSQL\14\bin\initdb" -U postgres -W -A scram-sha-256 -E utf8 -D "C:\Workspace\PostgreSQL\14\data"

Der Befehl initdb initialisiert einen Cluster mit einem Superuser namens postgres. Als Authentifizierungsmethode haben wir SCRAM-SHA-256 definiert. Sie wird von PostgreSQL als die sicherste Kennwort-basierte Methode empfohlen. Die Standard-Textkodierung haben wir auf UTF-8 konfiguriert.

Während der Ausführung wirst Du aufgefordert, ein Kennwort für den Superuser zu vergeben.

Sollte während der Ausführung folgender Fehler auftreten…

initdb: error: could not change permissions of directory "C:/Workspace/PostgreSQL/14/data": Permission denied

…, dann musst Du Deine Zugriffsrechte überprüfen und anpassen. Danach führe den initdb-Befehl von oben erneut aus.

Den Server starten und stoppen

Nach erfolgreicher Ausführung kannst Du den PostgreSQL-Server starten:

"C:\Program Files\PostgreSQL\14\bin\pg_ctl" -D "C:\Workspace\PostgreSQL\14\data" -l "C:\Workspace\PostgreSQL\14\log\pgsql.log" start

Möchtest Du den PostgreSQL-Server wieder stoppen, tippe folgendes ein:

"C:\Program Files\PostgreSQL\14\bin\pg_ctl" -D "C:\Workspace\PostgreSQL\14\data" stop

Der Server als Windows-Dienst

Unter Windows möchte man PostgreSQL natürlich als Windows-Dienst laufen lassen. Dazu musst Du zunächst den PostgreSQL-Server als Dienst registrieren:

"C:\Program Files\PostgreSQL\14\bin\pg_ctl.exe" register -N "PostgreSQL-14" -U "NT AUTHORITY\NetworkService" -D "C:\Workspace\PostgreSQL\14\data" -w

Vergebe volle Zugriffsrechte für den Systembenutzer NetworkService auf den Ordner C:\Workspace\PostgreSQL\14.

Nun kannst Du den Dienst starten:

net start "PostgreSQL-14"

So stoppst Du den Dienst wieder:

net stop "PostgreSQL-14"

Und so machst Du die Registrierung wieder rückgängig:

"C:\Program Files\PostgreSQL\14\bin\pg_ctl.exe" unregister -N "PostgreSQL-14"

Lokalisierung

In der PostgreSQL-Konfigurationsdatei data\postgresql.conf kannst Du die Sektion CLIENT CONNECTION DEFAULTS auf Deine Bedürfnisse anpassen.

Zwei interessante Parameter sind datestyle und timezone. Ist Dein Windows-Server beispielsweise auf Englisch eingestellt, kannst Du beide Parameter auf Deutsch umstellen:

datestyle = 'iso, dmy'
timezone = 'CET'

Vergiss bitte nicht, den PostgreSQL-Server nach jeder Änderung in data\postgresql.conf neu zu starten.

Updates einspielen

Die Versionsnummern von PostgreSQL bestehen seit Version 10 immer aus einer Major-Nummer und einer Minor-Nummer.

Beispiel: In der Versionsnummer 14.4 ist 14 die Major-Nummer und 4 die Minor-Nummer.

Aktualisierung zwischen Minor-Versionen

Bei einer Aktualisierung von PostgreSQL zwischen zwei Minor-Versionen, also z.B. von 14.3 auf 14.4, kannst Du einfach den PostgreSQL-Server stoppen, die Binärdateien austauschen und danach den PostgreSQL-Server wieder starten. Die Datenbankdateien bleiben unverändert. Grundsätzlich sollte man regelmäßig auf die neueste Minor-Version aktualisieren.

Aktualisierung zwischen Major-Versionen

Bei einer Aktualisierung von PostgreSQL zwischen zwei Major-Versionen, also z.B. von 12.11 auf 14.4, ist es etwas komplizierter, da alle Datenbanken migriert werden müssen.

Die Vorgehensweise besteht ganz grob aus drei Schritten:

  1. Installiere den neuen PostgreSQL-Server parallel zum bisherigen PostgreSQl-Server in einem neuen Unterordner.

  2. Führe eine Migration der Datenbanken durch.

  3. Deinstalliere den bisherigen PostgreSQL-Server.

Beispielhafte Aktualisierung von 12.11 auf 14.4:

  1. Stoppe PostgreSQL 12.11.

  2. Installiere und konfiguriere PostgreSQL 14.4.

  3. Stoppe PostgreSQL 14.4. Es ist jetzt wichtig, dass beide Server (12.11 und 14.4) nicht mehr ausgeführt werden.

  4. Konfiguriere eine temporäre trust-authentication bei beiden Servern. Öffne dazu die Datei ..\data\pg_hba.conf bei beiden Servern und setze METHOD für IP4 und IP6 auf trust.

    Bitte vergiss nicht, diese Änderung nach erfolgreicher Datenbankmigration wieder rückgängig zu machen.

Jetzt haben wir zwei PostgreSQL-Versionen nebeneinander liegen. Wir können die Migration der Datenbanken von 12.11 nach 14.4 starten. Öffne dazu die Windows-Kommandozeile als Administrator und tippe folgendes ein:

"C:\Program Files\PostgreSQL\14\bin\pg_upgrade.exe" -U postgres --old-bindir "C:\Program Files\PostgreSQL\12\bin" --new-bindir "C:\Program Files\PostgreSQL\14\bin" --old-datadir "C:\Workspace\PostgreSQL\12\data" --new-datadir "C:\Workspace\PostgreSQL\14\data"

Die Datenbankmigration wird gestartet. Das kann je nach Anzahl und Größe der Datenbanken etwas dauern.

Wenn erfolgreich beendet, kannst Du den neuen PostgreSQL-Server starten und mit ihm arbeiten. Wenn Du Dir absolut sicher bist, dass alles in Ordnung ist, kannst Du den alten PostgreSQL-Server komplett löschen.

Daten- und Log-Ordner verschieben

Das nachträgliche Verschieben der Ordner data und log ist jederzeit möglich.

Zunächst musst Du PostgreSQL stoppen. Öffne dazu die Windows-Kommandozeile als Administrator und führe folgenden Befehl aus:

net stop "PostgreSQL-14"

Jetzt verschieben wir die Ordner beispielhaft von C:\Workspace\PostgreSQL\14 nach D:\Databases\PostgreSQL\14:

  1. Verschiebe den Ordner C:\Workspace\PostgreSQL\14\data nach D:\Databases\PostgreSQL\14\data.

  2. Verschiebe den Ordner C:\Workspace\PostgreSQL\14\log nach D:\Databases\PostgreSQL\14\log.

  3. Vergebe volle Zugriffsrechte für Systembenutzer NetworkService auf den Ordner D:\Databases\PostgreSQL\14.

Als nächstes müssen wir die Konfiguration von PostgreSQL anpassen:

  1. Öffne die Datei D:\Databases\PostgreSQL\14\data\postgresql.conf in einem Texteditor Deiner Wahl.

  2. Setze die Variable auf data_directory = D:/Databases/PostgreSQL/14/data (Bitte achte auf die geforderten Schrägstriche).

  3. Setze die Variable auf log_directory = D:/Databases/PostgreSQL/14/log (Bitte achte auf die geforderten Schrägstriche).

  4. Speichere die Textdatei.

Der letzte Schritt ist die passende Konfigurierung des Windows-Dienstes:

  1. Öffne die Windows-Registry und wähle den Schlüssel Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PostgreSQL-14 aus.

  2. Setze den Wert von Image auf "C:\Program Files\PostgreSQL\14\bin\pg_ctl.exe" runservice -N "PostgreSQL-14" -D "D:\Databases\PostgreSQL\14\data".

Jetzt können wir PostgreSQL wieder starten:

net start "PostgreSQL-14"

Administrationswerkzeuge

psql

Wer mal eben schnell einen SQL-Befehl loswerden möchte, kann sich lokal per psql (PostgreSQL interactive terminal) anmelden.

Tipp dazu folgendes in die Eingabeaufforderung ein:

C:\Program Files\PostgreSQL\14\bin\psql.exe" -U postgres

Du wirst zunächst nach dem Kennwort für den PostgreSQL-Benutzer postgres gefragt:

Passwort für Benutzer postgres:

Dann erscheint folgende Eingabeaufforderung:

psql (14.4)
Geben Sie »help« für Hilfe ein.

postgres=# 

Als kleines Beispiel wollen wir jetzt die aktuelle Version von PostgreSQL per SQL erfragen:

postgres=# SELECT version();

Um psql wieder zu verlassen, gibt man \q ein und bestätigt.

pgAdmin

pgAdmin ist eine freie Open-Source-Software mit einer grafischen Oberfläche, um PostgreSQL-Datenbanken zu entwickeln und zu administrieren. pgAdmin 4 unterstützt PostgreSQL ab Version 9.5 und läuft unter Windows, Linux, macOS sowie weiteren Unix-Derivaten. Du kannst pgAdmin auf Deinem lokalen Computer installiern und per SSH auf die PostgreSQL-Instanz Deines Ubuntu-Server zugreifen.

Eine ausführliche Installationsanleitung für Windows findest Du in diesem Blog-Artikel.

Artikelhistorie

  • 20.02.2020
    • Erstveröffentlichung
  • 16.07.2022
    • Update auf PostgreSQL 14 und Windows Server 2022
    • Zusätzlicher Abschnitt zu Administrationswerkzeugen
    • Kleinere Korrekturen
Das könnte dich auch interessieren:
  1. pgAdmin 4 unter Windows 11
  2. PostgreSQL 10: Backups erstellen
  3. PostgreSQL 10 unter Windows 2019
  4. MkDocs unter Windows 11
  5. Systemabbild unter Windows 10
Teile diesen Artikel
comments powered by Disqus