Seminarunterlage Version: 2.4 Version 2.4 vom 6. Februar 2018
Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen oder eingetragene Warenzeichen der jeweiligen Firmen und beziehen sich auf Eintragungen in den USA oder USA-Warenzeichen. Weitere Logos und Produkt- oder Handelsnamen sind eingetragene Warenzeichen oder Warenzeichen der jeweiligen Unternehmen. Kein Teil dieser Dokumentation darf ohne vorherige schriftliche Genehmigung der weitergegeben oder benutzt werden. Die besitzt folgende Geschäftsstellen Adressen der Karl-Schurz-Straße 19a D-33100 Paderborn Tel.: (+49) 0 52 51 / 10 63-0 An der alten Ziegelei 5 D-48157 Münster Tel.: (+49) 02 51 / 9 24 35 00 Welser Straße 9 D-86368 Gersthofen Tel.: (+49) 08 21 / 507 492 0 Kreuzberger Ring 13 D-65205 Wiesbaden Tel.: (+49) 06 11 / 7 78 40 00 Wikingerstraße 18-20 D-51107 Köln Tel.: (+49) 02 21 / 8 70 61 0 Internet: http://www.ordix.de Email: seminare@ordix.de Seite 2 Version: 2.4
Inhaltsverzeichnis 1 Architektur und Features... 7 1.1 Überblick... 8 1.1.1 Überblick RDBMS... 8 1.1.2 Ursprung von PostgreSQL... 11 1.1.3 Bezugsquellen und Dokumentation... 12 1.1.4 Lizenzmodell... 13 1.1.5 Entwicklungsschritte... 14 1.1.6 PostgreSQL Features... 15 1.1.7 Grenzen von PostgreSQL... 17 1.1.8 Features ab Version 10... 18 1.2 Begriffsdefinitionen... 19 1.2.1 Datenbank-Cluster... 19 1.2.2 Write-Ahead-Log (WAL)... 20 1.2.3 Tablespaces... 21 1.2.4 Tupel... 22 1.2.5 Pages... 23 1.2.5.1 Aufbau einer Page... 23 1.2.5.2 Dirty Page... 24 1.2.6 Checkpoint... 25 1.3 PostgreSQL-Prozesse... 27 1.3.1 Überblick... 27 1.3.2 Prozesse... 28 1.3.2.1 Serverprozesse... 28 1.3.2.2 Serverprozess postgres... 29 1.3.2.3 Backendprozess postgres... 30 1.3.2.4 Hintergrundprozesse... 31 1.3.2.5 Background Writer... 32 1.3.2.6 WAL-Writer... 33 1.4 PostgreSQL-Konzepte... 34 1.4.1 MVCC... 34 1.4.2 TOAST... 35 1.4.3 Transaction Isolation... 36 2 Installation... 38 2.1 Voraussetzungen... 39 2.2 Kerneleinstellungen... 41 2.3 Benutzer postgres... 42 2.4 Installationsvarianten... 43 2.4.1 Überblick... 43 2.4.2 Installation über Repository... 44 2.4.3 Installation mit rpm... 45 2.4.4 Installation vom Quellcode... 47 2.4.5 Installer EnterpriseDB... 49 2.4.5.1 EnterpriseDB ohne GUI... 49 2.4.5.2 EnterpriseDB mit GUI... 50 2.5 Besonderheiten anderer Betriebssysteme... 52 3 Ersteinrichtung... 54 3.1 Umgebungsvariablen... 55 3.2 Initialisierung des Clusters... 57 3.3 Datenbankstruktur... 60 3.3.1 Physikalische und logische Datenbankstruktur... 60 3.3.2 Data-Ordner... 61 3.3.2.1 Ordnerstruktur PGDATA... 61 3.3.2.2 Ordner base und OID... 62 3.3.2.3 Ordner global... 63 3.3.2.4 Ordner pg_log... 64 3.3.2.5 Ordner pg_tblsp... 65 Version: 2.4 Seite 3
3.3.2.6 Ordner pg_xlog... 66 3.4 Instanz-Owner... 67 3.5 Modus ändern mit pg_ctl... 68 3.6 Voreinstellungen abfragen... 69 4 Arbeiten mit PostgreSQL... 70 4.1 psql... 71 4.1.1 Allgemeines zu psql... 71 4.1.2 Verbindungsaufbau... 72 4.1.3 Kurzbefehle... 73 4.1.3.1 Hilfe und Dateibearbeitung... 73 4.1.3.2 Objekte anzeigen... 74 4.1.3.3 Weitere Kommandos... 75 4.1.3.4 Anzeige modifizieren... 76 4.2 postgresql.conf... 78 4.3 ALTER SYSTEM... 80 4.4 Erstkonfiguration... 82 4.4.1 Verbindungen und Authentifizierung... 82 4.4.2 Server-Logging... 83 4.4.3 Write Ahead Log (WAL)... 85 4.5 pg_hba.conf... 87 4.6 Tablespaces... 90 4.6.1 CREATE TABLESPACE... 90 4.6.2 ALTER TABLESPACE... 91 4.6.3 Standard Tablespaces... 92 4.7 Arbeiten mit Datenbanken... 93 4.7.1 Templates... 93 4.7.2 Datenbanken erstellen und löschen... 95 4.7.3 Standardschemata... 97 4.7.4 Systemkatalog... 98 4.7.5 Schema information_schema... 101 4.7.6 Extensions... 103 4.7.6.1 Allgemeines zu Extensions... 103 4.7.6.2 Kompilation neuer Extensions... 104 4.7.6.3 Einbinden von Extensions... 105 4.7.6.4 CREATE EXTENSION... 106 4.7.6.5 Wichtige Extensions... 107 5 Tools... 109 5.1 Überblick... 110 5.2 Be- und Entladen von Tabellen... 111 5.3 Checkpoint... 113 5.4 Funktionen... 114 5.5 WAL wechseln... 115 5.6 Tabellendefinition... 116 5.7 Transaktionen beenden... 117 5.8 pgadmin4... 118 5.9 Monitoring Dashboard... 120 6 Benutzerverwaltung... 121 6.1 Schemata... 122 6.2 User und Zugriffsrechte... 123 6.2.1 Rollen und User... 123 6.2.2 Zugriffsrechte... 126 6.2.2.1 Zugriffsrechte für Rollen vergeben... 126 6.2.2.2 Zugriffsrechte für Tabellen vergeben... 127 6.2.2.3 Zugriffsrechte entziehen... 128 6.2.2.4 Zugriffsrechte anzeigen... 129 6.3 pg_ident.conf... 130 Seite 4 Version: 2.4
6.4 User Mapping... 132 7 Backup und Restore... 136 7.1 Überblick... 137 7.2 Arten von Backups... 138 7.3 SQL-Dump... 139 7.4 File System Level Backup... 145 7.5 SQL-Dump vs. Archive Backup... 147 7.6 Continuous Archiving und Point-in-Time Recovery... 148 7.7 Backup... 149 7.7.1 Vorbereitung... 149 7.7.2 Manuelles Backup... 151 7.7.3 Backup mit pg_basebackup... 152 7.7.4 Tablespace-Backup... 154 7.8 Restore... 156 7.8.1 Normales Restore... 156 7.8.2 Tablespace Restore... 157 7.8.3 Point-In-Time-Recovery (PITR)... 159 7.8.4 Restore über Timelines... 160 7.9 Zusammenfassung Backup-Funktionen... 161 8 Hochverfügbarkeit... 162 8.1 Überblick Hochverfügbarkeit... 163 8.2 Gründe für Hochverfügbarkeit... 164 8.3 Arten von Hochverfügbarkeit... 165 8.3.1 Log-Shipping... 166 8.3.2 Streaming Replication... 169 8.3.3 Log-Shipping vs. Streaming Replication... 172 8.3.4 Hot Standby... 173 8.3.5 Cascading Replication... 174 8.3.6 Synchronous Replication... 175 8.4 Dass Kommando pg_standby... 176 8.5 Replication Slots... 177 8.6 Failover... 178 8.7 Switchover... 179 8.8 Konfigurationsparameter... 180 8.9 Funktionen... 182 9 Tuning... 183 9.1 Überblick... 184 9.2 VACUUM... 185 9.2.1 Was ist VACUUM?... 185 9.2.2 Der Befehl VACUUM... 186 9.2.3 VACUUM ausführen... 187 9.2.4 VACUUM - Speicherplatz freigeben... 188 9.2.5 VACUUM Datenbankstatistiken aktualisieren... 190 9.2.6 VACUUM - Beschleunigung... 191 9.2.7 VACUUM Datenverlust vorbeugen... 192 9.3 Der Befehl ANALYZE... 193 9.4 Parametertuning... 194 9.4.1 Speichernutzung... 194 9.4.2 Checkpointzeiten... 196 10 Security... 197 10.1 Überblick... 198 10.2 SSL... 199 10.3 Überwachung mit pg_audit... 204 10.4 Verschlüsselung mit pgcrypto... 208 11 Advanced... 211 Version: 2.4 Seite 5
11.1 Überblick... 212 11.2 Upgrade... 213 11.2.1 Version... 213 11.2.2 Upgrademöglichkeiten... 214 11.2.3 Minor Update... 215 11.2.4 Major Update... 216 11.2.5 Upgrade mit pg_upgrade... 217 11.2.6 Mögliche Fehler... 219 11.3 Fehleranalyse... 220 11.3.1 Checksums erstellen... 220 11.3.2 Extension pageinspect... 221 11.4 Weitere Extensions... 225 11.4.1 pg_trgm... 225 12 Übungen... 230 12.1 Architektur und Features... 231 12.2 Installation... 232 12.3 Ersteinrichtung... 234 12.4 Arbeiten mit PostgreSQL... 236 12.5 Tools... 242 12.6 Benutzerverwaltung... 244 12.7 Backup und Restore... 245 12.8 Hochverfügbarkeit... 247 12.9 Tuning... 249 12.10 Security... 250 12.11 Advanced... 252 Seite 6 Version: 2.4