Titelei
Impressum
Inhalt
1 Einführung und Geschichte
1.1 Die Geschichte von PostgreSQL
1.2 Verwendete Version
1.3 Konventionen
1.4 Software und Skripte
2 Installation aus Paketen und Quellcode
2.1 Paketinstallation
2.1.1 Paketinstallation unter Linux
2.1.2 Paketinstallation unter Windows
2.2 Installation aus dem Quellcode
2.2.1 Installation aus dem Quellcode unter Linux
2.2.2 Installation aus dem Quellcode unter Windows
2.3 Erste Schritte
3 Upgrade auf Version 10
3.1 Upgrade mit pg_dumpall
3.2 Upgrade mit pg_upgrade
3.3 Migration nach Native Partitioning
3.4 Regressionstests
4 Die Architektur von PostgreSQL
4.1 Überblick
4.2 Memory und Prozesse
4.2.1 Hintergrundprozesse
4.2.2 Der Shared Memory
4.3 VACUUM
4.4 Cluster, Datenbanken und Tabellen
5 Server und Datenbanken administrierenTabelle
5.1 Parameter-Einstellungen
5.1.1 Einstellungen im Betriebssystem
5.1.2 Cluster-Einstellungen
5.1.3 Gebietsschema und Zeichensatz
5.2 Datenbanken verwalten
5.3 Konkurrenz
5.4 Die WAL-Archivierung einschalten
5.5 Wartungsaufgaben
5.5.1 VACUUM
5.5.2 ANALYZE
5.6 Nützliche Skripte und Hinweise
5.6.1 Eine Passwortdatei verwenden
5.6.2 Welche Parameter sind Nicht-Standard?
5.6.3 Eine Session killen
5.6.4 Eine Tabelle nach Excel kopieren
5.6.5 Die Datei .psqlrc
5.6.6 Einen WAL-Switch manuell auslösen
5.6.7 Die PostgreSQL-Server-Logdatei in eine Tabelle laden
5.6.8 Automatisches Rotieren von Logdateien
5.6.9 Nicht verwendete Indexe identifizieren
5.6.10 Microsoft Excel als Datenbank-Client
5.6.11 Den Inhalt der Kontrolldatei ausgeben
5.6.12 Platzverbrauch von Tabellen
5.6.13 Die Anzahl von Verbindungen begrenzen
5.6.14 Tabellen und Indexe in einen anderen Tablespace legen
5.6.15 Temporäre Dateien verwalten
5.6.16 Lang laufende SQL-Anweisungen
5.7 Beispielschemata
6 Neue Features
6.1 Neue Features in Version 10
6.1.1 Native Table Partitioning
6.1.2 Paralleles SQL
6.1.3 Logische Replikation
6.1.4 Änderungen der Architektur
6.1.5 SQL-Anweisungen
6.1.6 Monitoring
6.1.7 Werkzeuge
6.1.8 Konfigurationsparameter
6.2 Neue Features in den Versionen 9.2 bis 9.6
6.2.1 Backend
6.2.2 Replikation
6.2.3 Performance
7 Sicherung und Wiederherstellung
7.1 Online-Sicherung mit Point-in-time-Recovery
7.2 Offline-Sicherung auf Dateisystemebene
7.3 SQL Dump
8 Sicherheit und Überwachung
8.1 Sicherheit
8.1.1 Rollen und Privilegien
8.1.2 Authentifizierung und Zugangskontrolle
8.1.3 Rechteverwaltung
8.1.4 Sichere Verbindungen
8.1.5 Out-of-the-box-Sicherheit
8.1.6 Hacker-Attacken abwehren
8.2 Überwachung
8.2.1 Auditing
8.2.2 Monitoring
9 Replikation zwischen Clustern
9.1 Physische Replikation
9.1.1 Vorbereitung und Planung
9.1.2 Konfiguration und Aktivierung
9.1.3 Kaskadenförmige Replikation
9.1.4 Hot Standby
9.1.5 Synchrone Replikation
9.1.6 Die Replikation überwachen
9.1.7 Failover und Switchover
9.2 Logische Replikation
9.3 Logical Decoding
9.3.1 Logical Decoding mit Java als Consumer
10 Das Regelsystem
10.1 Das Regelsystem für SELECT-Anweisungen
10.2 Das Regelsystem für DML-Anweisungen
10.3 Regeln und Views
11 Performance Tuning
11.1 Out-of-the-box-Tuning
11.1.1 Goldene Regeln für neue Server und Datenbanken
11.1.2 Das Utility "pgTune"
11.1.3 Optimierung von Memory-Parametern
11.2 Performance-Analyse
11.2.1 Analyse mit dem "Statistics Collector"
11.2.2 Der Background Writer
11.2.3 Analyse mit "pgstatspack"
12 Optimierung von SQL-Anweisungen
12.1 Ausführungsschritte
12.2 Der SQL-Optimizer
12.3 Statistiken und Histogramme
12.4 Zugriffsmethoden
12.5 Join-Methoden
12.6 SQL-Optimierung
12.6.1 Der EXPLAIN-Befehl
12.6.2 Ausführungspläne verstehen und optimieren
13 Einsatz großer Datenbanken
13.1 Partitionierung von Tabellen
13.1.1 Native Table Partitioning
13.2 Paralleles SQL
13.3 Materialized Views
13.4 BRIN-Indexe
14 PostGIS
14.1 PostGIS und PostgreSQL
14.2 PostGIS installieren
14.2.1 Paketorientierte Installation
14.2.2 Installation aus dem Quellcode
14.3 Erste Schritte mit PostGIS
14.4 PostGIS in der Praxis anwenden
15 Applikationen für PostgreSQL entwickeln
15.1 Applikationsdesign
15.2 Entwicklungswerkzeuge
15.3 PostgreSQL Extensions
16 SQL-Erweiterungen
16.1 Datentypen
16.2 Funktionen und Sprachen
16.2.1 SQL-Funktionen
16.2.2 Funktionen mit prozeduralen Programmiersprachen
16.2.3 C-Funktionen
16.3 Operatoren
16.4 Das Extension-Netzwerk
16.4.1 Extensions entwickeln
16.4.2 Extensions publizieren
17 PL/pgSQL-Funktionen und Trigger
17.1 PL/pgSQL-Funktionen
17.1.1 Abfragen und Resultsets
17.1.2 Cursor verwenden
17.1.3 DML-Anweisungen
17.1.4 Dynamische SQL-Anweisungen
17.1.5 Fehlerbehandlung
17.2 Trigger
18 Embedded SQL (ECPG)
19 Java-Programmierung
19.1 Eine Entwicklungsumgebung einrichten
19.2 Verarbeitung von Resultsets
19.3 DML-Anweisungen und Transaktionen
19.4 Bindevariablen verwenden
19.5 Java und Stored Functions
19.6 Large Objects
19.7 JDBC-Tracing
20 Die C-Library libpq
20.1 Die Entwicklungsumgebung einrichten
20.2 Programme mit "libpq" erstellen
21 PHP-Applikationen
21.1 Installation und Konfiguration
21.2 Applikationen mit PHP entwickeln
21.3 Die PDO-API
22 Client-Programmierung mit Perl-DBI
22.1 SELECT-Anweisungen und Resultsets
22.2 DML-Anweisungen
22.3 Bindevariablen verwenden
22.4 Fehlerbehandlung und Tracing
22.5 Nützliche Skripte und Beispiele
22.5.1 Mehrere Server abfragen
22.5.2 Parallele Verbindungen
22.5.3 Large Objects verarbeiten
22.5.4 Asynchrone Abfragen
22.5.5 Datenbanken vergleichen
23 Large Objects
24 PostgreSQL in die IT-Landschaft einbinden
24.1 Features und Funktionen
24.2 Datensicherheit und Wiederherstellung
24.3 Desaster Recovery
24.4 Überwachung
24.5 Administrierbarkeit
24.6 Verfügbarkeit
24.7 Datensicherheit und Auditing
24.8 Performance und Skalierbarkeit
24.9 Schnittstellen und Kommunikation
24.10 Support
24.11 Fazit
25 Migration von MySQL-Datenbanken
25.1 Unterschiede zwischen MySQL und PostgreSQL
25.2 Eine Migration durchführen
26 Von Oracle nach PostgreSQL migrieren
26.1 Die Migration planen
26.2 Unterschiede zwischen Oracle und PostgreSQL
26.2.1 Unterschiede der Datentypen
26.2.2 Syntaktische und logische Unterschiede
26.2.3 Steigerung der Kompatibilität von PostgreSQL
26.3 Portierung von Oracle PL/SQL
26.4 Tools zur Unterstützung der Migration
26.5 Technisches Vorgehen
26.6 Ein Migrationsbeispiel
26.6.1 Manuelle Migration
26.6.2 Migration unter Verwendung von "Ora2Pg"
26.6.3 Große Tabellen laden
27 Replikation zwischen Oracle und PostgreSQL
27.1 Datenbanklink zwischen Oracle und PostgreSQL
27.2 Replikation mit Oracle XStream
28 PostgreSQL in der Cloud
28.1 Private Cloud
28.2 Public Cloud
Lutz Fröhlich
PostgreSQL 10
Praxisbuch für Administratoren und Entwickler
Alle in diesem Buch enthaltenen Informationen, Verfahren und Darstellungen wurden nach bestem Wissen zusammengestellt und mit Sorgfalt getestet. Dennoch sind Fehler nicht ganz auszuschließen. Aus diesem Grund sind die im vorliegenden Buch enthaltenen Informationen mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autor und Verlag übernehmen infolgedessen keine juristische Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieser Informationen – oder Teilen davon – entsteht.
Ebenso übernehmen Autor und Verlag keine Gewähr dafür, dass beschriebene Verfahren usw. frei von Schutzrechten Dritter sind. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Buch berechtigt deshalb auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen und MarkenschutzGesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften.
Bibliografische Information der Deutschen Nationalbibliothek: Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.
Dieses Werk ist urheberrechtlich geschützt. Alle Rechte, auch die der Übersetzung, des Nachdruckes und der Vervielfältigung des Buches, oder Teilen daraus, vorbehalten. Kein Teil des Werkes darf ohne schriftliche Genehmigung des Verlages in irgendeiner Form (Fotokopie, Mikrofilm oder ein anderes Verfahren) – auch nicht für Zwecke der Unterrichtsgestaltung – reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden.
© 2018 Carl Hanser Verlag München
www.hanser-fachbuch.de
Lektorat: Sylvia Hasselbach
Copyediting: Walter Saumweber, Ratingen
Umschlagdesign: Marc Müller-Bremer, München, www.rebranding.de
Umschlagrealisation: Stephan Rönigk
Print-ISBN 978-3-446-45395-1
E-Book-ISBN 978-3-446-45641-9
Verwendete Schriften: SourceSansPro und SourceCodePro (Lizenz)
CSS-Version: 1.0
Font License | Zurück zum Impressum |
Copyright 2010, 2012, 2014 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL ----------------------------------------------------------- SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ----------------------------------------------------------- PREAMBLE The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. DEFINITIONS "Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. "Reserved Font Name" refers to any names specified as such after the copyright statement(s). "Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). "Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. "Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. PERMISSION & CONDITIONS Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: 1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. 2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. 3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. 5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. TERMINATION This license becomes null and void if any of the above conditions are not met. DISCLAIMER THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
1 | Einführung und Geschichte |
Es sind fünf Jahre seit dem Erscheinen des Buches "PostgreSQL 9 – Praxisbuch für Administratoren und Entwickler" vergangen. Aufgrund der positiven Kritiken und der großen Nachfrage haben sich Verlag und Autor entschlossen, für die Version 10 wiederum ein Buch zu veröffentlichen. Das Buch präsentiert sich im bekannten Stil des Autors. Es ist jedoch keine einfache Überarbeitung des Vorgängers, sondern wurde auf Grundlage der neuen Features der Version 10 neu strukturiert und wesentlich erweitert.
Die neuen Features seit der Version 9.1 und insbesondere die der Version 10 sind in Kapitel 6 herausgestellt. Kapitel 4 beschäftigt sich eingehend mit der Architektur, um das Verständnis für interne Prozesse und Abläufe zu fördern. Wesentlich ausgebaut wurde der Teil für Entwickler. Im Buch sind die populärsten Programmiersprachen mit zahlreichen Beispielen abgedeckt. Auch die Möglichkeiten von Erweiterungen sowie der Programmierung und Veröffentlichung eigener Module werden dargestellt.
Der Sprung zur Version 10 ist ein Major Release-Wechsel. Kapitel 3 gibt wertvolle Hinweise für das Upgrade. Wenn Sie von einem anderen Datenbanksystem kommen, dann unterstützen Sie die Kapitel 25 und 26 bei der Migration. Darüber hinaus finden Sie in diesem Buch praktische Erfahrungen zur Einbindung von PostgreSQL in eine bestehende IT-Landschaft.
Das Buch ist als Einstieg und Nachschlagewerk für IT-Profis geschrieben und setzt Basiskenntnisse von relationalen Datenbanken voraus. Auf eine Erläuterung von gängigen Begriffen wird deshalb bewusst verzichtet, auch um den Umfang des Buches überschaubar zu halten. Dennoch finden Sie viele Beispiele und Praxistipps, die auch Einsteigern die Möglichkeit bieten, sich in das Produkt einzuarbeiten.
PostgreSQL hat in den vergangenen Jahren an Verbreitung und Popularität erheblich zugenommen. Dazu hat in erheblichem Maß die permanente Erweiterung mit neuen Features und die Anpassung an die Belange der Anwender beigetragen. PostgreSQL ist der lebende Beweis, dass Open Source-Software nicht nur mit kommerziellen Produkten mithalten kann, sondern in vielen Bereichen sogar überlegen ist. Der kommerzielle Druck steht nicht im Vordergrund und lässt die Entwickler-Community frei arbeiten und Innovationen umsetzen.
Neben einem robusten Transaktionskern sowie einer hohen Zuverlässigkeit bietet PostgreSQL viele Features eines modernen Datenbank-Betriebssystems und kann problemlos in eine vorhandene IT-Infrastruktur integriert werden. Durch den hohen Kompatibilitätsgrad zu Oracle ist der Migrationsaufwand überschaubar und ein Mischbetrieb gut umzusetzen.
Die Version 10 beeindruckt durch neue Features wie "Native Table Partitioning" und "Logische Replikation" sowie Erweiterungen im Bereich "Parallel Query". Trotz einer zunehmenden Anzahl von Features ist PostgreSQL eine schlanke und sehr gut zu verwaltende Datenbank geblieben. Sie konzentriert sich auf das Kerngeschäft, der Verwaltung von Datenbeständen.
PostgreSQL kann auf allen populären Plattformen wie Linux, MacOS, Solaris oder Windows eingesetzt werden. Obwohl es sich um ein Open Source-Produkt handelt, kann kommerzieller Support zu einem vernünftigen Preis hinzugekauft werden. Einem professionellen Einsatz steht damit nichts im Wege.
Freuen Sie sich auf einen PostgreSQL-Server 10 mit spannenden neuen Features!
1.1 | Die Geschichte von PostgreSQL |
PostgreSQL geht zurück auf das POSTGRES-Projekt, das an der University of California at Berkeley in den 80er-Jahren angesiedelt war. Die erste vorzeigbare Version erschien im Jahre 1987 als Postgres-Version 1. Als Reaktion auf die ersten Kritiken wurde das noch heute in PostgreSQL vorhandene Rule-System entwickelt. Version 3 erschien im Jahre 1991 mit einer Weiterentwicklung der Abfrageeinheit. 1993 beendete die University of California das Projekt mit der Version 4.2, um die rasant wachsenden Supportanforderungen nicht mehr tragen zu müssen.
Nach Hinzufügen eines SQL-Abfrageinterpreters im Jahre 1995 wurde die Software unter dem Begriff Postgres95 ins Web gestellt, mit dem Quellcode des originalen Berkeley-Postgres. Das Produkt war zu dieser Zeit komplett in ANSI C geschrieben. Durch Verbesserung in den Bereichen Wartbarkeit und Performance lief es schließlich bis zu 50 % schneller als das originale Berkeley-Postgres.
Die Entscheidung, die Jahreszahl aus dem Produktnamen zu entfernen, fiel im Jahre 1996. Damit wurde Postgres95 zu PostgreSQL, und es begann die ständige Weiterentwicklung von PostgreSQL als Open-Source-Produkt. Obwohl Letzteres über viele Jahre ein Schattendasein im Licht der großen kommerziellen Datenbanken, aber auch der durch den Internet-Boom schnell verbreiteten Open-Source-Datenbank MySQL führte, erfolgte seine konsequente Weiterentwicklung durch die Community.
Heute präsentiert sich PostgreSQL als ausgereift und stabil und erfüllt (fast) alle Anforderungen an ein modernes relationales Datenbanksystem. Für viele überraschend: Die Performance ist vergleichbar mit so manchem kommerziellen Produkt.
1.2 | Verwendete Version |
Das Buch bezieht sich auf die während der Manuskripterstellung vorliegende aktuelle Version 10.3. Schauen Sie regelmäßig nach weiteren Veröffentlichungen, insbesondere für neuere Features und Versionen, auf der Webseite des Verlags und der Autoren-Webseite vorbei. Alles rund um die PostgreSQL-Community finden Sie auf der Webseite http://www.postgresql.org.
1.3 | Konventionen |
Begriffe in spitzen Klammern bezeichnen eine zu ersetzende Variable (so ist zum Beispiel der Ausdruck <VERSION> in der Regel durch die aktuelle Version 10.3 zu ersetzen). Die meisten Darstellungen beziehen sich gleichermaßen auf UNIX- und Windows-Betriebssysteme. Die Darstellung der Umgebungsvariablen erfolgt im Wesentlichen im UNIX-Format, das heißt z. B. $BIN statt %BIN% für Windows. Sie können das Format einfach nach Windows übertragen. Das Gleiche gilt für das Trennzeichen der Pfade: „/“ unter Unix sowie „\“ unter Windows.
1.4 | Software und Skripte |
Sie können die aktuelle Version von PostgreSQL aus dem Internet herunterladen und installieren. Es wird die Installation aus dem Quellcode empfohlen, um alle Beispiele nachvollziehen zu können. Ideal ist, wenn Sie auf einem Linux- oder Windows-Betriebssystem arbeiten.
Alle nummerierten Listings im Buch können als Datei von der Webseite des Verlags sowie von der Autoren-Webseite heruntergeladen werden:
http://www.hanser-fachbuch.de
http://www.lutzfroehlich.de
Darmstadt und Oasis del Sol, im April 2018
Lutz Fröhlich
lutz@lutzfroehlich.de
2 | Installation aus Paketen und Quellcode |
Die Installation kann sowohl von vorgefertigten Paketen als auch aus dem Quellcode erfolgen. Wenn Sie eine schnelle Installation bevorzugen, ist die einfachere Paketinstallation zu empfehlen. Allerdings müssen Sie dann mit dem Setup leben, die das Paket zur Verfügung stellt. Mit der Installation aus dem Quellcode sind Anpassungen und Erweiterungen möglich. Für den produktiven Einsatz ist zu beachten, dass Supportleistungen von Anbietern sich ausschließlich auf die entsprechenden Pakete beziehen. Diese Pakete sind bis zu einem gewissen Grad getestet. Beachten Sie, dass damit eine Abhängigkeit vom Release-Zyklus des Drittanbieters besteht. Ein wichtiger Vorteil der Paketinstallation ist, dass einheitliche Versionsstände ausgerollt werden können.
In diesem Kapitel werden beide Varianten vorgestellt. Um alle in diesem Buch vorgestellten Features und Optionen nachvollziehen zu können, wird eine Installation aus dem Quellcode empfohlen.
2.1 | Paketinstallation |
Alle erforderlichen Informationen für die Installation befinden sich auf der Seite http://postgresql.org/download unter dem Abschnitt Binary Packages. Wir führen zuerst eine Paketinstallation für Linux und danach eine für Windows durch.
2.1.1 | Paketinstallation unter Linux |
Pakete für Linux stehen für die gebräuchlichsten Derivate zur Verfügung. Wir führen eine Installation unter Oracle Linux 7 durch, das weitgehend kompatibel mit Red Hat Linux ist. Wenn Sie bei der Installation des Betriebssystems ein yum-Repository erzeugt haben, dann können Sie einfach eine yum-Installation durchführen. Alternativ können Sie die RPM-Pakete herunterladen und manuell installieren.
Im folgenden Beispiel wird die Installation unter Oracle Linux Version 7 durchgeführt. Oracle Linux ist ein Ableger von Red Hat. Bereits bei der Installation des Betriebssystems kann das yum-Repository angelegt werden. Die folgenden Schritte beschreiben die Installation der Version 10:
Installieren Sie das RPM im Repository.
Zuerst wird das Paket für den Client installiert.
Danach erfolgt die Installation des Server-Pakets.
Zum Schluss können Sie den automatischen Start konfigurieren.
Falls keine Verbindung vom Datenbankserver zum Internet existiert, muss das Paket manuell heruntergeladen und übertragen werden. Gehen Sie dazu auf die Seite https://yum.postgresql.org/rpmchart.php und wählen Sie das passende Paket aus. Für die aktuelle Version lautet das Paket:
https://yum.postgresql.org/10/redhat/rhel-7-x86_64/repoview/postgresqldbserver10.group.html.
Die Installation kann wie gewohnt mit dem rpm-Utility erfolgen.
2.1.2 | Paketinstallation unter Windows |
Für die Paketinstallation unter Windows erfolgt eine Weiterleitung von der Downloadseite postgresql.org/download auf die Webseite von EnterpriseDB. Dort können Sie Version und Betriebssystem auswählen und im Fall von Windows den Windows-Installer herunterladen. EnterpriseDB ist ein Anbieter von vorgefertigten Paketen und Supportleistungen für diese Distributionen.
Starten Sie den Windows Installer.
Zuerst wird das Visual C++ 2013 Redistributable-Paket installiert. Das ist erforderlich, da während der PostgreSQL-Installation die Bibliotheken neu verbunden werden müssen.
Es erscheint das graphische Installationsprogramm.
Bild 2.1 Installation des Pakets unter Windows mit dem Setup-Programm
Wählen Sie die Verzeichnisse für die Installation der Software und für die Datenbanken.
Danach werden das Passwort für den Superuser (postgres), die Portnummer des Listeners und die Locale abgefragt. Der Installer legt einen Windows-Dienst zur Verwaltung des PostgreSQL-Servers an.
Bild 2.2 Der PostgreSQL-Dienst in Windows
Die Paketinstallation ist damit abgeschlossen und PostgreSQL kann genutzt werden.
2.2 | Installation aus dem Quellcode |
Das Vorgehen bei der Installation aus dem Quellcode ist für alle Betriebssysteme ähnlich. Die Quellprogramme werden kompiliert, gelinkt und anschließend im Installationsverzeichnis bereitgestellt. In diesem Abschnitt werden die Schritte für Linux und Windows vorgestellt. Eine Installation aus dem Quellcode kann besser individualisiert und erweitert werden. Sie können sogar eigene Programmkomponenten einbinden.
2.2.1 | Installation aus dem Quellcode unter Linux |
Wir installieren an dieser Stelle zunächst den Standardumfang und werden im weiteren Verlauf des Buches darauf hinweisen, wenn zusätzliche Optionen eingebunden werden.
Das folgende Vorgehen beschreibt die Installation unter Oracle Enterprise Linux Version 7:
Laden Sie den Quellcode von der Webseite http://www.postgresql.org/download herunter. Die Datei hat das Format https://ftp.postgresql.org/pub/source/v10.3/postgresql-10.3.tar.gz.
Entpacken Sie den Quellcode und wechseln Sie in das Verzeichnis postgresql-<version>.
Im ersten Schritt der Installation werden die Quellen für das Betriebssystem konfiguriert. Das Skript configure führt einige Tests aus, um die Werte einiger systemabhängiger Variablen zu bestimmen.
Starten Sie anschließend den Build-Prozess. Es werden die Libraries und Binaries erstellt. Verwenden Sie das GNU Make Utility und achten Sie auf die Erfolgsmeldung am Ende des Durchlaufs.
Im nächsten Schritt erfolgt die Installation der Binaries in die Verzeichnisse. Dieser Schritt muss ebenfalls unter dem Benutzer root ausgeführt werden, um die erforderlichen Berechtigungen zu erstellen. Standardmäßig erfolgt die Installation in das Verzeichnis /usr/local/pgsql.
6.
Damit ist die Installation abgeschlossen. In der Nachbereitung sind folgende Schritte erforderlich:
a)
Einen Benutzer postgres als Eigentümer der Software und des Servers erstellen:
Ein Verzeichnis zum Speichern der Datenbankdateien erstellen:
Den Datenbankserver erstellen:
Den Datenbankserver starten. Verifizieren Sie, dass die Prozesse laufen:
Eine Testdatenbank mit dem Namen hanser anlegen:
Damit ist die Installation aus dem Quellcode abgeschlossen und der PostgreSQL-Server ist einsatzbereit.
2.2.2 | Installation aus dem Quellcode unter Windows |
Die Installation aus dem Quellcode auf einem Windows-Betriebssystem erscheint auf den ersten Blick etwas aufwendiger, was jedoch eher am Handling der Compiler sowie des Windows-Plattform-Supports liegt.
PostgreSQL kann mithilfe des Visual C++-Compilers von Microsoft übersetzt und verbunden werden.
HINWEIS: Verwenden Sie das Microsoft Windows SDK für das Erstellen der Software aus dem Quellcode. Alternativ kann das Visual Studio installiert werden, das ebenfalls alle erforderlichen Programme für das Kompilieren und Linken der Quellen enthält.
In den folgenden Schritten erfolgt die Installation unter Windows 10 auf einer 64-Bit-Plattform.
Installieren Sie Microsoft Windows SDK oder Visual Studio.
Für die Installation ist ein Perl-Interpreter erforderlich. Installieren Sie im Bedarfsfall ActiveState Perl. Das Paket sowie die Installationsanleitung finden Sie auf der Webseite http://www.activestate.com.
Entpacken Sie den heruntergeladenen PostgreSQL-Quellcode. Auch wenn die Datei die Endung .tar.gz besitzt, kann sie mit den meisten Kompressionswerkzeugen direkt unter Windows ausgepackt werden. Im vorliegenden Beispiel werden die Quellen in das Laufwerk D:\PostgreSQL gelegt. Beim Entpacken wird ein Unterverzeichnis mit der verwendeten Version angelegt.
Öffnen Sie eine Windows-Eingabeaufforderung (DOS-Fenster) mit Administratorrechten. Wechseln Sie in das Verzeichnis D:\PostgreSQL\postgresql-<version>.
Für eine Installation von 64-Bit-Programmen muss der Visual C++-Compiler auf 64 Bit gestellt werden. Das erfolgt durch Aufrufen der Batchdatei vcvarsall.bat.
Wechseln sie in das Unterverzeichnis ..\src\tools\msvc und starten Sie Kompilierung und Verbinden des Quellcodes. Achten Sie auf die Erfolgsmeldung am Ende.
Im letzten Schritt erfolgt die Installation. Geben Sie das gewünschte Verzeichnis an, unter dem die Software installiert werden soll.
Analog zu den Installationsschritten unter Linux kann der Datenbankserver jetzt initialisiert werden.
Zum Schluss wird der Server gestartet und eine Datenbank mit dem Namen hanser angelegt.
Damit ist die Installation abgeschlossen und der PostgreSQL-Server kann verwendet werden.
HINWEIS: Die Syntax sowie die meisten Beispiele im Buch beziehen sich auf ein Linux-System. Wenn Sie vorzugsweise unter Windows arbeiten, dann können Sie dennoch alles nachvollziehen, wenn Sie die betriebssystemspezifischen Abweichungen beachten. Das Verhalten von PostgreSQL ist plattformübergreifend analog.
Alternativ kann ein Windows-Dienst eingerichtet werden, der das Starten und Stoppen bei Start und Shutdown des Betriebssystems übernimmt.
Bild 2.3 Einen Windows-Dienst für den PostgreSQL-Server anlegen
2.3 | Erste Schritte |
Für ein bequemes Handling sollten mindestens die Umgebungsvariablen PATH und PGDATA gesetzt werden.
Listing 2.1Den Ausführungspfad sowie die Variable PGDATA setzen
$ export PATH=/usr/local/pgsql/bin:$PATH $ export PGDATA=/usr/local/pgsql/data
Das Starten und Stoppen des Servers erfolgt mit dem Utility pg_ctl.
Listing 2.2Den PostgreSQL-Server starten und stoppen
$ pg_ctl start -l logfile waiting for server to start.... done server started $ pg_ctl stop waiting for server to shut down.... done server stopped
Sobald der Server gestartet ist, können Verbindungen zur Datenbank hergestellt werden. Das Kommandozeilen-Utility psql ist Bestandteil der Installation und kann direkt auf dem Server aufgerufen werden.
Listing 2.3Eine Verbindung zur Datenbank mit psql herstellen
$ psql hanser psql (10.3) Type "help" for help. hanser=# SELECT current_database(); current_database ------------------ hanser (1 row) hanser=# SELECT version(); version ---------------------------------------------------------------------------------- PostgreSQL 10.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-17), 64-bit (1 row) hanser=# \q
Aus Sicherheitsgründen ist der Zugriff von einem entfernten Server oder Client standardmäßig abgeschaltet. Der erste Versuch, von einem Client mit der SQL-Shell auf den PostgreSQL-Server zuzugreifen, wird deshalb mit der folgenden Fehlermeldung scheitern:
Um einen Zugriff von entfernten Computern zu gestatten, müssen noch Anpassungen an den Konfigurationsdateien vorgenommen werden:
Stoppen Sie den PostgreSQL-Server.
Wechseln Sie in das Datenverzeichnis ($PGDATA) und editieren Sie die zentrale Konfigurationsdatei postgresql.conf. Ändern Sie den Eintrag für den Parameter listen_addresses von "localhost" auf den Servernamen oder dessen IP-Adressen, unter der dieser über das Netzwerk-Interface erreichbar ist. Mit dem Eintrag "localhost" hört der Server nur auf ankommende Anfragen, die vom Server kommen. Eine Verbindung von außen ist damit nicht möglich.
PostgreSQL besitzt eine Konfigurationsdatei mit dem Namen pg_hba.conf für die Authentifizierung von Clients. Sie befindet sich im selben Verzeichnis. Fügen Sie den folgenden Eintrag mit der IP-Adresse des Clients hinzu, von dem aus Sie zugreifen möchten. Weitere Informationen zu diesem Thema finden Sie im Kapitel "Sicherheit und Überwachung".
Starten Sie den PostgreSQL-Server.
Jetzt können Sie sich von dem frei geschalteten Computer aus verbinden.
Umgebungsvariablen
Wie Sie sicherlich bemerkt haben, müssen dem psql-Utility für die Verbindung zu einem entfernten Server die Verbindungsinformationen mitgegeben werden. Alternativ können diese in den folgenden Umgebungsvariablen hinterlegt werden:
PGHOST: Name oder IP-Adresse des Servers
PGPORT: TCP/IP-Port des PostgreSQL-Servers (Standard 5432)
PGDATABASE: Name der Datenbank
PGUSER: Benutzername für die Verbindung
Für die Verwaltung von Server und Datenbanken gibt es eine Anwendung mit grafischer Oberfläche mit dem Namen pgAdmin. Es ist ebenfalls ein Open Source-Programm und kann von der Webseite https://www.pgadmin.org/download heruntergeladen werden. Erstellen Sie eine neue Serververbindung durch Eingabe der üblichen Parameter. Da wir den Client bereits freigeschaltet haben, wird die Verbindung direkt funktionieren.
Bild 2.4 Einen Server im pgAdmin-Tool registrieren
Das Tool vereinfacht die Navigation durch Server und Datenbanken und verfügt über zusätzliche Funktionen im Vergleich zur Kommandozeile.
Bild 2.5 Das pgAdmin-Tool
Wie Sie vielleicht bemerkt haben, sendet der Server seine Nachrichten nach stdout, wenn er ohne die Logfile-Option gestartet wird. In der Standardkonfiguration ist das Schreiben von Nachrichten in Logdateien ausgeschaltet. Mit der folgenden Einstellung in der Konfigurationsdatei postgresql.conf wird ein minimales Schreiben von Fehlermeldungen und Servernachrichten eingeschaltet:
Mit dem Neustart erscheint die Meldung:
Unter $PGDATA wurde das Verzeichnis pg_log angelegt. Darin befindet sich die Logdatei des PostgreSQL-Servers:
Wenn Sie den Server mit "pg_ctl stop" heruntergefahren haben, dann konnten Sie feststellen, dass der Server gestoppt wurde, obwohl noch Clients verbunden waren. Hier hat es eine Veränderung des Standards gegeben. Mit der Version 9.5 wurde der Standard der Shutdown-Option von "smart" auf "fast" geändert. Auch in der Version 10 ist der Standard "fast", d. h. der Befehl ist identisch mit pg_ctl stop -m fast. Tabelle 2.1 beschreibt die Optionen.
Tabelle 2.1 Optionen zum Stoppen des PostgreSQL-Servers
Option |
Aktion |
smart |
Stoppen, wenn sich alle Clients abgemeldet haben |
fast |
Verbindungen trennen, Server sauber herunterfahren |
immediate |
Prozesse sofort beenden, ohne den Server sauber herunterzufahren |
Wenn Sie mit den Stopp-Optionen von Oracle vertraut sind, werden Sie feststellen, dass bei PostgreSQL gleiche Begriffe auftauchen, die allerdings anders interpretiert werden. Tabelle 2.2 vergleicht die Shutdown-Optionen zwischen Oracle und PostgreSQL.
Tabelle 2.2 Vergleich der Shutdown-Optionen zwischen Oracle und PostgreSQL
PostgreSQL |
Oracle |
smart |
normal |
nicht vorhanden |
transactional |
fast |
immediate |
immediate |
abort |
3 | Upgrade auf Version 10 |