So geht PostgreSQL

PostgreSQL hat sich bewährt und gilt seit Jahren als echter Geheimtipp in Sachen Open-Source-Enterprise-Software.
jadimages | shutterstock.com



MySQL ist vielleicht die bekanntere relationale Datenbank – PostgreSQL steht ihr jedoch in Sachen Funktionen und Performance in nichts nach – eher im Gegenteil. Die Open-Source-Datenbank zu installieren, ist ebenfalls kein Problem, vorausgesetzt, Sie kennen die Fallstricke dabei.



In diesem Artikel erfahren Sie, wie Sie:




PostgreSQL unter Windows, Linux und macOS installieren.



die Datenbanklösung unter Linux konfigurieren.



Daten zwischen verschiedenen PostgreSQL-Versionen migrieren.



sich das Drittanbieter-Administrations-Tool pgAdmin zunutze machen.




Dabei fokussieren wir uns auf die (zum Zeitpunkt der Artikelerstellung) aktuelle Revision der Datenbank – PostgreSQL 16.



PostgreSQL installieren



PostgreSQL steht in Binärform für alle großen Betriebssysteme zur Verfügung – auch für Windows-Server. Funktionstechnisch bietet PostgreSQL dabei auf sämtlichen unterstützen Plattformen denselben Umfang – von einigen Ausnahmen abgesehen, auf die wir gleich näher eingehen.



PostgreSQL unter Windows installieren



Entwickler, die PostgreSQL unter Windows einrichten wollen, haben die Wahl zwischen verschiedenen Installationsprogrammen, die von Drittanbietern bereitgestellt werden – von einfachen .zip-Archiven bis hin zu interaktiven GUI-gesteuerten Installern.



Die Dokumentation von PostgreSQL verweist auf den Installer von EnterpriseDB. Dieser enthält den Graphical Installation Wizard von PostgreSQL, ein simples Tool, um die Datenbank samt zugehöriger Support-Tools Schritt für Schritt einzurichten. Darüber hinaus enthält dieses Installationsprogramm auch den „Stack Builder“, um eine Vielzahl zusätzlicher Tools herunterzuladen und zu installieren. Dazu gehören beispielsweise:  




Datenbanktreiber,



andere PostgreSQL-Editionen (für den Fall, dass Sie diese parallel betreiben müssen),



die EnterpriseDB-eigenen Add-ons und



das Slony-I-Replikationssystem für PostgreSQL.




Für erfahrene Benutzer bietet EnterpriseDB auch ein einfaches .zip-Archiv an, das nicht mehr als die PostgreSQL-Binärdateien für Windows enthält.



Für den Fall, dass Sie PostgreSQL unter Windows ausführen möchten, ohne es zu installieren oder Daten zu hinterlassen, gibt es ein – wenn auch etwas komplexes – Rezept, um PostgreSQL aus seiner .zip-Archivdistribution zu starten. Das ist nützlich, wenn Sie mit PostgreSQL auf einem Desktop arbeiten wollen, auf dem Softwareinstallationen eingeschränkt sind – oder Sie sich auf ein systemfremdes beziehungsweise externes Laufwerk beschränken wollen.



Das Drittanbieter-Projekt PostgreSQL Portable verpackt eine Standalone-Version von PostgreSQL für den PortableApps App-Launcher. Unglücklicherweise wurde es zuletzt für Version 10 aktualisiert.



Eine Einschränkung, die Sie beachten sollten, wenn Sie PostgreSQL unter Windows betreiben: Die Datenbank kann in diesem Fall nur eine begrenzte Zahl von parallelen Verbindungen offenhalten (125). Dieses Limit gilt, wenn PostgreSQL als Service ausgeführt und nicht über die Kommandozeile aufgerufen wird. 



Laut dem PostgreSQL-Wiki liegt das an Abhängigkeiten zu user32.dll, die Speicher aus dem Desktop-Heap zuweist. Da der Heap eine feste Größe hat und jede Verbindung eine bestimmte Menge an Speicher verbraucht, kann es zu Fehlern kommen, wenn mehr als etwa 125 Verbindungen bestehen.



In den meisten Anwendungsszenarien dürfte die begrenzte Anzahl der parallelen Verbindungen kein Problem aufwerfen, weil es selten nötig ist, über die Zahl von 125 hinausgehen. Eine Anwendung mit qualitativ hochwertigem Design kann Connection Pooling nutzen, um zu vermeiden, in das Limit zu laufen. Das sollten Sie ohnehin nutzen, um die Anzahl der Verbindungen zur Datenbank mit der Anzahl der auf Ihrem Server verfügbaren Hardware-Threads in Einklang zu bringen.



PostgreSQL unter Linux installieren



Linux-Distributionen unterscheiden sich stark in Bezug auf die Art und Weise, wie Software installiert und gewartet wird – unterschiedlichen Packet-Managern, -formaten und Software-Repository-Philosophien sei Dank. Das kann zum Hindernis werden, wenn Sie die aktuelle PostgreSQL-Version auf Ihrer Plattform installieren wollen.




Ubuntu unterhält beispielsweise eine Version von PostgreSQL in seinen APT-Repositories. Diese können Sie mit dem Befehl apt install postgresql installieren. Sollte das Ubuntu-Repository nicht die aktuelle Version enthalten, müssen Sie apt.postgresql.org zu Ihrer Repository-Liste hinzufügen und PostgreSQL darüber beziehen.



Sowohl das Red-Hat- als auch das Fedora-Linux-Repository enthalten eine PostgreSQL-Edition. Die spezifische Version variiert je nach Distribution, wobei Fedora häufiger aktualisiert wird als Red Hat. Der sicherste Weg, die neueste Version von PostgreSQL für Red Hat oder Fedora zu installieren, führt über den Download des Installation Artifact – entweder direkt über PostgreSQL oder das yum-Repository.



Für jede Hauptversion von PostgreSQL unter Linux stehen Container-Images in Docker Hub zur Verfügung. Dabei ist zu beachten, dass der Container einen Speicherort braucht, um dauerhaft Daten speichern zu können. Standardmäßig ist das /var/lib/postgresql/data. Indem Sie die Umgebungsvariable PGDATA bearbeiten, können Sie auf einen anderen Speicherort verweisen.




Unter Linux ist zudem eine relevante Frage, welches Dateisystem genutzt werden soll, um die PostgreSQL-Daten zu speichern. Laut aktuellen Benchmarks ist ext4/XFS dafür eine gute Wahl. Zwar legt die PostgreSQL-FAQ ZFS wegen seiner Administrations- und Snapshotting-Funktionalitäten nahe, allerdings ist Ubuntu derzeit die einzige große Linux-Distribution, die ZFS aktuell beinhaltet.



PostgreSQL auf macOS installieren



Mac-Benutzer verlassen sich oft den quelloffenen Package Manager Homebrew, um Open-Source-Projekte über die Befehlszeile zu installieren. Das funktioniert auch, um PostgreSQL und all seine Abhängigkeiten mit einem einzigen Befehl zu installieren: brew install postgresql. Dabei ist es auch möglich, eine spezifische PostgreSQL-Version zu installieren – dazu verwenden Sie beispielsweise den Befehl brew install postgresql@12.



Eine weitere Möglichkeit, PostgreSQL unter macOS zu installieren, führt über die Drittanbieter-Lösung Postgres.app, die die Datenbank als herkömmliche Mac-App neu verpackt.



Die Webseite des Projekts bietet Installer für die aktuellen Versionen von PostgreSQL und sämtliche wichtigen GUI-Clients. Postgres.app konfiguriert dabei auch automatisch für Sie vor – zum Beispiel, indem es das Datenverzeichnis und die User-Datenbank initialisiert. Zudem bündelt dieses Angebot viele gängige Tools wie pg_upgrade.



PostgreSQL unter Linux konfigurieren



Wenn Sie einen der oben beschriebenen Installer für Windows verwenden, werden Sie komfortabel durch alle Installationsschritte geführt, um PostgreSQL zum Laufen zu bringen. Unter Linux hingegen müssen Sie das hingegen in den meisten Fällen selbst übernehmen.



PostgreSQL unter Fedora Linux konfigurieren



PostgreSQL ist in den Standard-Repositories von Fedora enthalten. Über den Befehl sudo dnf install postgresql-server postgresql-contrib werden diese direkt installiert. Danach müssen Sie PostgreSQL aktivieren, damit es beim Boot-Vorgang gestartet wird. Das geht mit:



sudo systemctl enable postgresql



Zusätzlich müssen Sie auch das Setup-Skript von PostgreSQL manuell ausführen, um die initialen Datenbanken zu erstellen. Der Befehl hierzu:



sudo postgresql-setup --initdb --unit postgresql



Das Postgres-Systempasswort, also das Passwort für das Konto, unter dem der PostgreSQL-Dienst läuft, definieren Sie mit:



sudo passwd postgres



Dann starten Sie den PostgreSQL-Server:



sudo systemctl start postgresql



Setzen Sie nun das Passwort für das interne postgres-Benutzerkonto, also das Konto, das für die direkte Verbindung zu PostgreSQL verwendet wird. Um sich mit PostgreSQL zu verbinden, führen Sie die Befehlszeilenanwendung psql aus und geben den Befehl \password  postgres ein.



Das Fedora-Wiki hält viele zusätzliche Hinweise bereit, um PostgreSQL unter Fedora Linux zu installieren. Die hier dargelegten reichen jedoch für ein Basis-Setup.



PostgreSQL unter Ubuntu Linux konfigurieren



Ubuntu enthält die Standard-Repositories von PostgreSQL. Der Einrichtungsprozess ähnelt dem von Fedora, läuft aber prägnanter ab.



Standardmäßig reagiert PostgreSQL nur auf Verbindungen mit dem lokalen System. Um das zu ändern, editieren Sie die Datei /etc/postgresql//main/postgresql.conf, wobei die Versionsnummer von PostgreSQL darstellt. Entfernen Sie dann in der Datei das # vor dem Parameter listen_addresses und setzen Sie dessen Wert auf '*'.



Im nächsten Schritt legen Sie das Passwort für das Benutzerkonto fest. Führen Sie dazu den Befehl sudo -u postgres psql template1 aus, um sich mit PostgreSQL zu verbinden, gefolgt von:



ALTER USER postgres with encrypted password 'your_password';



Installieren Sie nun die Basispakete mit:



sudo apt update



sudo apt install postgresql



Um SHA-256-Authentifizierung für Verbindungen zu erzwingen, bearbeiten Sie die Datei /etc/postgresql/*/main/pg_hba.conf. Wenn Sie  zum Beispiel SSL für die Datenbank template1 mit dem Benutzer postgres erzwingen wollen, der sich von einem bestimmten Adressbereich aus verbindet, würden Sie hinzufügen:



hostssl template1 postgres 192.168.122.1/24 scram-sha-256



Setzen Sie nun den PostgreSQL-Dienst auf Autostart und starten Sie ihn neu, damit die Änderungen wirksam werden. Das funktioniert mit:



sudo systemctl enable postgresql.service



sudo systemctl restart postgresql.service



Anschließend wechseln Sie die Benutzer und verbinden sich testweise dem Server:



sudo -i -u postgres



psql



Dabei ist zu beachten, dass hier kein postgresql-setup-Schritt erforderlich ist.



Daten zwischen PostgreSQL-Versionen migrieren



Ab Version 16 bietet PostgreSQL drei wesentliche Wege, um Daten im Rahmen eines Versions-Upgrades zu migrieren.




Die Utility pg_upgrade ist der bevorzugte Weg, um Daten zwischen PostgreSQL-Versionen zu migrieren. Sie kommt typischerweise zur Anwendung, wenn Sie eine neue PostgreSQL-Version neben einer alten installieren wollen. Dazu starten Sie pg_upgrade über die neue Installation, verweisen auf die alte und lassen die Daten übertragen. Um den Migrationsprozess zu beschleunigen, macht sich das Dienstprogramm die Konsistenz zwischen den einzelnen Revisionen des PostgreSQL-Datenformats zunutze. Es realisiert daher nicht nur die bequemste, sondern auch die schnellste Art der Migration.



Eine andere Möglichkeit, Daten zwischen PostgreSQL-Versionen zu migrieren führt über Replikation – beispielsweise mit Slony. Hierbei wird die neuere Version von PostgreSQL verwendet, um einen Standby-Server für den Server zu erstellen, auf dem die ältere Version läuft. Diese Methode gewährleistet die geringsten Ausfallzeiten, da sie im Hintergrund abläuft. Sobald die Replikation abgeschlossen ist, müssen Sie nur noch alle Verbindungen vom alten auf den neuen Server umleiten. Wenn Sie Replikation sonst allerdings gar nicht verwenden, könnte diese Methode zu viele Hürden aufwerfen.



Das Dienstprogramm pg_dumpall exportiert den gesamten Inhalt eines PostgreSQL-Servers in eine oder mehrere SQL-Dump-Files. Das resultierende Skript oder die Archivdatei kann dann auf dem neuen Server ausgeführt oder importiert werden. Es ist auch möglich, den alten und den neuen Server nebeneinander einzurichten und die Utility zu verwenden, um die Dump-Operation zwischen ihnen zu „pipen“. Der größte Nachteil von pg_dumpall ist, dass es langsam ist. Dennoch eignet sich diese Methode hervorragend als Fallback-Option.




pgAdmin 4 installieren



Um PostgreSQL-Installationen zu managen, bietet das Drittanbieter-Tool pgAdmin 4 ein nützliches, webbasiertes GUI. Es kann allerdings etwas mühsam sein, das Tool zum Laufen zu bringen, weil es in Python geschrieben ist und viele Abhängigkeiten zu der Programmiersprache aufweist.


Das pgAdmin-4-Tool bietet ein komfortables Interface, um mit PostgreSQL-Instanzen zu arbeiten.
pgAdmin.org




Windows- und macOS-Benutzer dürfen einen Binary Installer über die pgAdmin-Website herunterladen.



Für Ubuntu steht ein APT-Package bereit. Sämtliche Schritte, die zur Installation nötig sind, beschreibt dieser Thread im Ubuntu-Forum en detail.



Für Fedora und Red Hat Linux existiert ein RPM-Package.



Docker-Benutzer können einen Container mit pgAdmin 4 und all seinen Abhängigkeiten erstellen und verwenden.




(fm)



Sie wollen weitere interessante Beiträge zu diversen Themen aus der IT-Welt lesen? Unsere kostenlosen Newsletter liefern Ihnen alles, was IT-Profis wissen sollten – direkt in Ihre Inbox!