Suchen und Finden
Service
PostgreSQL-Administration
Peter Eisentraut, Bernd Helmle
Verlag O'Reilly Verlag, 2013
ISBN 9783868993622 , 412 Seiten
3. Auflage
Format PDF, OL
Kopierschutz frei
PostgreSQL-Administration
3
Inhalt
5
Vorwort
13
Zielgruppe
13
Struktur dieses Buchs
14
In diesem Buch behandelte Versionen
15
Neues in der dritten Auflage
15
Typografische Konventionen
15
Danksagungen
16
Kapitel 1 – Installation
17
Softwareinstallation
17
Versionierung
18
Paketinstallation
19
Debian und Ubuntu
19
Red Hat
20
SUSE
20
Quellcode bauen
20
Contrib
22
PostgreSQL einrichten
23
Datenverzeichnis initialisieren
23
Datenverzeichnis bestimmen
23
Benutzerkonto einrichten
24
Datenverzeichnis initialisieren
25
Server starten
28
Server starten mit Programm postgres
28
Server starten mit dem Programm pg_ctl
29
Server mit Init-Skript starten
30
Server anhalten
31
Server per Signal anhalten
31
Server anhalten mit dem Programm pg_ctl
32
Server anhalten mit Init-Skript
33
Server neu starten oder neu laden
33
Nächste Schritte
34
Upgrades durchführen
34
Kleine und große Upgrades
34
Upgrade mit pg_dumpall
35
Upgrade mit pg_upgrade
37
Upgrade durch Replikation
38
Kapitel 2 – Konfiguration
39
Allgemeines
39
Die Datei postgresql.conf
40
Syntax
41
include
41
Änderungen laden
42
Kommandozeile
43
PGOPTIONS
43
SET, RESET und SHOW
44
Einstellungen für Datenbanken und Rollen
45
Präzedenz
46
Einstellungen
47
Verbindungskontrolle
47
listen_addresses
47
port
48
max_connections
49
superuser_reserved_connections
49
ssl
50
Speicherverwaltung
50
shared_buffers
51
temp_buffers
51
work_mem
52
maintenance_work_mem
54
Wartung: Vacuum und Autovacuum
55
autovacuum
55
autovacuum_max_workers
55
autovacuum_naptime
55
Scale Factor und Threshold
55
Transaktionslog
55
fsync
56
wal_buffers
57
synchronous_commit
57
wal_writer_delay
58
checkpoint_segments
58
checkpoint_timeout
59
checkpoint_warning
59
checkpoint_completion_target
59
full_page_writes
60
wal_level
61
archive_mode
61
archive_command
61
archive_timeout
61
hot_standby
61
max_wal_senders
62
wal_sender_delay
62
max_standby_archive_delay
62
max_standby_streaming_delay
62
wal_keep_segments
62
vacuum_defer_cleanup_age
62
wal_receiver_status_interval
63
hot_standby_feedback
63
Planereinstellungen
63
Plantypen
63
enable_seqscan
64
enable_indexscan
64
enable_indexonlyscan
64
enable_bitmapscan
64
enable_nestloop
64
enable_hashjoin
64
enable_mergejoin
64
enable_hashagg
64
enable_sort
64
enable_tidscan
65
enable_material
65
Kostenparameter
65
seq_page_cost
65
random_page_cost
65
cpu_tuple_cost
65
cpu_index_tuple_cost
65
cpu_operator_cost
65
effective_cache_size
65
Andere Planereinstellungen
65
default_statistics_target
65
cursor_tuple_fraction
66
Logging
66
Wohin soll geloggt werden?
66
log_destination
67
CSV-Log
68
logging_collector
69
log_directory
69
log_filename
70
log_rotation_age
70
log_rotation_size
70
log_truncate_on_rotation
70
syslog_facility
71
syslog_ident
71
Wann soll geloggt werden?
71
client_min_messages
71
log_min_messages
72
log_autovacuum_min_duration
72
log_error_verbosity
72
log_min_error_statement
73
log_min_duration_statement
73
Was soll geloggt werden?
74
log_checkpoints
74
log_connections
74
log_disconnections
74
log_duration
74
log_hostname
75
log_line_prefix
75
log_lock_waits
77
log_statement
77
log_temp_files
78
log_timezone
78
Statistiken
78
track_activities
78
track_activity_query_size
79
track_counts
79
track_functions
79
track_io_timing
79
update_process_title
79
stats_temp_directory
80
Lokalisierung
80
client_encoding
81
datestyle
82
intervalstyle
82
lc_collate
82
lc_ctype
83
lc_messages
83
lc_monetary
83
lc_numeric
84
server_encoding
84
Diverses
84
bytea_output
84
custom_variable_classes
84
effective_io_concurrency
85
search_path
85
server_version
86
server_version_num
86
shared_preload_libraries
86
local_preload_libraries
86
statement_timeout
87
timezone
87
Betriebssystemeinstellungen
87
Shared Memory
87
Memory Overcommit
89
Zusammenfassung
90
Kapitel 3 – Wartung
91
VACUUM
91
Multiversion Concurrency Control
91
Der VACUUM-Befehl
93
Einfaches VACUUM
94
VACUUM FULL
94
Einfrieren
96
Die Free Space Map
97
Die Visibility Map
98
Überwachung von VACUUM
98
ANALYZE
99
Das Programm vacuumdb
100
Autovacuum
101
Konfiguration
102
autovacuum
102
log_autovacuum_min_duration
102
autovacuum_max_workers
102
autovacuum_naptime
103
autovacuum_freeze_max_age, vacuum_freeze_min_age
103
vacuum_freeze_table_age
104
Scale Factor und Threshold
105
Überwachung von Autovacuum
106
Tabellenspezifische Einstellungen für Autovacuum
106
Kostenbasiert verzögertes Vacuum
107
Konfiguration
107
vacuum_cost_delay
108
vacuum_cost_limit
108
vacuum_cost_page_hit
108
vacuum_cost_page_miss
109
vacuum_cost_page_dirty
109
autovacuum_vacuum_cost_delay
109
autovacuum_vacuum_cost_limit
109
Reindizierung
109
Weitere Wartungsaufgaben
110
Wartungsstrategie
110
Kapitel 4 – Datensicherung
113
Datensicherungsstrategie
113
Allgemeines über Sicherheit
113
Risiken
114
Überlegungen zur Datensicherung
115
Wohin sichern?
115
Wie oft sichern?
116
Was sichern?
116
Wie wiederherstellen?
117
Was kostet das?
117
Datensicherungsmethoden für PostgreSQL
118
RAID
118
Replikation
118
Dateisystemsicherung
119
Dateisystem sichern
119
Snapshots
120
Wiederherstellung
120
Dumps
121
Dumps ausführen
121
Datensicherung auf andere Rechner
122
Automatisierung
123
Sicherungsstände rotieren
123
Wiederherstellung
124
Keine inkrementelle Sicherung
125
Andere Ausgabeformate
126
WAL-Archivierung und Point-in-Time-Recovery
128
Konzepte
129
Archivierung konfigurieren
129
Archivierungsintervalle
130
Basissicherungen
131
Basissicherung von Hand
132
Organisation der Sicherung
134
Bereinigung der Sicherung
134
Wiederherstellung
136
Point-in-Time-Recovery
138
Zeitleisten
139
Einschätzung
140
Hot Standby
141
Kapitel 5 – Überwachung
143
Was überwachen?
143
Datenbankaktivität
143
Sperren
143
Logdateien
144
Betriebssystem
144
Datensicherung
144
Wie überwachen?
145
Unix-Werkzeuge
145
ps
145
top
147
ptop
148
iotop
148
vmstat
149
iostat
149
Statistiktabellen
151
Aktivität
151
Datenbanken
154
Tupelstatistiken
155
Background Writer
159
Blockstatistiken
160
Replikationsstatistiken
160
Statistiken zurücksetzen
161
Sperren
161
Informationen über Objektgrößen
163
pg_stat_statements
164
Grafische Administrationsprogramme
167
Überwachungswerkzeuge
169
Nagios
169
Munin
170
Sysstat
171
pgFouine
171
pgBadger
173
Und nun?
174
Kapitel 6 – Wiederherstellung, Reparatur und Vorsorge
175
Wiederherstellung und Reparatur
175
Softwarefehler und Abstürze
175
Clientanwendungsabstürze
176
Datenbankserverabstürze
177
Betriebssystemabstürze
178
Hardwareausfälle
179
Stromausfall
179
Festplattenausfall
179
Speicherfehler
179
Bedienfehler und versehentliches Löschen
179
Versehentliches Löschen (DELETE)
180
Datei gelöscht
181
Tabelle gelöscht
181
Index gelöscht
181
Datenbank gelöscht
181
Korrupte Dateien
182
Server startet nicht
182
Write-Ahead-Log defekt
182
Index defekt
185
Tabelle defekt
186
Vorsorge
189
Kapitel 7 – Sicherheit, Rechteverwaltung, Authentifizierung
193
Allgemeines über Sicherheit
193
Benutzerverwaltung
194
Benutzer, Gruppen, Rollen
194
Benutzer anlegen
195
Rollenattribute
197
Login
197
Superuser
198
Attribut zum Erzeugen von Datenbanken
199
Attribut zum Erzeugen von Rollen
199
Replikation
200
Passwörter
200
Passwortgültigkeit
201
Verbindungslimits
202
Rollen ändern
202
Gruppenrollen anlegen und verwalten
203
Rollen anzeigen
204
Rollen löschen
207
Benutzer und Rollen in der Praxis
208
Sichere Datenübertragung
209
Sichere Datenübertragung mit SSL
210
Sichere Datenübertragung mit Tunneln
211
Zugangskontrolle
212
Die Datei pg_hba.conf
213
Typ
214
Datenbankname
215
Benutzername
216
Adresse
217
Methode
220
Authentifizierungsmethoden
220
Trust
220
Reject
221
Passwortauthentifizierung
221
Die Datei .pgpass
222
Ident-basierte Authentifizierung
222
Peer-Authentifizierung
224
Authentifizierung mit Kerberos, GSSAPI und SSPI
225
Authentifizierung mit PAM
225
Authentifizierung mit LDAP
227
Authentifizierung mit RADIUS
228
Clientauthentifizierung mit SSL
229
Authentifizierungsprobleme
230
Zugangskontrolle in der Praxis
232
Rechteverwaltung
232
Privilegien gewähren und entziehen
233
Eigentümerrechte
234
Privilegtypen
235
Privilegien für Tabellen und Sichten
235
Privilegien für Sequenzen
236
Privilegien für Funktionen
237
Privilegien für Schemas
237
Privilegien für Datenbanken
238
Privilegien für Fremddaten-Wrapper
238
Privilegien für Fremdserver
238
Privilegien für Sprachen
238
Privilegien für Large Objects
239
Privilegien für Tablespaces
239
Privilegien für Typen
239
Vorgabeprivilegien
239
Grant-Optionen
240
Privilegien anzeigen
241
Rechteverwaltung in der Praxis
244
Kapitel 8 – Performance-Tuning
245
Ablauf der Befehlsverarbeitung
245
Empfang über Netzwerk
245
Parser
246
Rewriter
246
Planer/Optimizer
247
Executor
248
Ergebnis über Netzwerk
249
Flaschenhälse
249
CPU
249
RAM
250
Festplattendurchsatz
250
Festplattenlatenz
251
Festplattenrotation
251
Netzwerkverbindung
251
Indexe einsetzen
252
Einführung
252
Indextypen
255
Mehrspaltige Indexe und Indexkombination
256
Indexe über Ausdrücke
258
Unique Indexe
258
Partielle Indexe
259
Operatorklassen
261
Indizierung von Mustersuchen
262
Indexe und Fremdschlüssel
263
HOT Updates
264
Nebenläufiges Bauen von Indexen
264
Optimierung von CREATE INDEX
266
Ausführungspläne
266
Planknoten
266
Pläne ansehen und analysieren
268
EXPLAIN und EXPLAIN ANALYZE
270
Pläne mit Bitmap Index Scan
271
Pläne und LIMIT
272
Pläne mit Indexscan
272
Pläne mit Index-Only-Scan
273
Pläne mit Sortieren
273
Pläne auswählen und vergleichen
274
Join-Pläne
276
auto_explain
278
Statistiken und Kostenparameter
279
Statistiken für den Planer
279
ANALYZE
283
Kostenparameter
284
seq_page_cost
285
random_page_cost
285
cpu_tuple_cost
286
cpu_index_tuple_cost
286
cpu_operator_cost
286
effective_cache_size
286
Ungeloggte Tabellen
287
Partitionierung
287
Tabellen partitionieren
288
Constraint Exclusion
289
Partitionierte Tabellen beschreiben
290
Einschätzung
291
Befüllen der Datenbank
291
Transaktionen
292
COPY statt INSERT
293
Indexe, Fremdschlüssel, Reihenfolge
293
Serverkonfiguration
294
Checkpoints
294
Speicher
295
Archivierung
295
Fsync
296
Überblick
296
Nach dem Laden
296
Kapitel 9 – Replikation und Hochverfügbarkeit
297
Begriffserklärung
297
Connection Pooling
297
Clustering
298
Shared Storage
298
Shared Nothing
298
Sharding
298
Replikation
299
Master/Slave-Replikation
299
Multimaster-Replikation
299
Standby-Systeme
300
Hot Standby
301
Planung
301
Konfiguration
302
Failover
304
Verwalten von WAL-Archiven
305
Einschränkungen
305
Zusammenfassung
308
Streaming Replication
308
Planung
309
Konfiguration
309
Asynchrone Replikation
309
Synchrone Replikation
311
Kaskadierende Replikation und Änderungen der Timeline
313
Überwachung
313
Zusammenfassung
316
WAL-Replikation mit pg_standby
316
Konfiguration
316
Failover mit pg_standby
317
Slony-I
318
Konzeption
318
Bevorzugte Anwendungsgebiete
320
Installation
320
Auswahl der Slony-I-Version
320
Debian
321
Quelltextinstallation
322
Die Kommandosprache slonik
322
slonik-Präambel
323
CLUSTER NAME
323
NODE ADMIN CONNINFO
323
Initialisieren eines Clusters
323
INIT CLUSTER
323
Verwalten und Konfigurieren von Clustern
324
CLONE PREPARE, CLONE FINISH
324
CREATE SET
324
DROP NODE
324
DROP PATH
324
EXECUTE SCRIPT
324
FAILOVER
325
LOCK SET, UNLOCK SET
325
MERGE SET
326
MOVE SET
326
RESTART NODE
327
SET ADD TABLE
327
SET ADD SEQUENCE
328
SET DROP TABLE
328
SET DROP SEQUENCE
328
STORE NODE
328
STORE PATH
329
SUBSCRIBE SET
329
UNINSTALL NODE
331
UNSUBSCRIBE SET
331
UPDATE FUNCTIONS
331
WAIT FOR EVENT
331
Der erste Slony-I-Cluster
332
Das Datenbankschema
332
Einrichten der Authentifizierung
333
Einrichten des Datenbankschemas
334
Definition des Clusters
334
Initialisieren des Clusters
336
Starten der Replikationsserver
337
Erstellen der Sets
339
Abonnieren der Sets
340
Überwachung und Wartung
341
Lagtime überwachen
342
slon-Prozesse überwachen
343
Speicherverbrauch überwachen
343
Optimierung
343
Subscriber mit hoher oder anwachsender Lagtime
343
Hohe I/O-Last auf Origin
344
slon-Prozesse und Instabilitäten
344
Zusammenfassung
344
pgpool-II
345
Installation
345
Konfiguration
345
pgpool und Slony
347
pgpool und Streaming Replication
348
PgBouncer
349
Installation
350
Pool-Modi
350
Konfiguration
351
Starten
352
Überwachung und Wartung
353
PgBouncer und Skalierung mit vielen Datenbankverbindungen
356
PL/Proxy
356
Installation
357
Konfiguration
357
plproxy.get_cluster_version
358
plproxy.get_cluster_config
358
plproxy.get_cluster_partitions
360
Beispiel
360
Zusammenfassung
363
DRBD
364
Installation
364
Konfiguration
364
Integration mit Pacemaker
367
Grundlegende Konfiguration
367
Einrichten der Cluster Ressourcen
368
Konfiguration von Ressourcen
370
Wartung
374
STONITH - Shoot The Other Node In The Head
377
Zusammenfassung
377
Kapitel 10 – Hardware
379
Arbeitsspeicher
379
Prozessor
380
Festspeichersystem
382
Anforderungen an das Festspeichersystem
382
Größe des Festspeichersystems
383
Anbindung des Festspeichersystems
384
Geschwindigkeit und Redundanz
386
RAID 0
386
RAID 1
386
RAID 5
386
RAID 6
387
RAID 10
387
RAID 15
388
Redundanz in NAS- oder SAN-Systemen
388
Datensicherheit bei Festplattenlaufwerken und RAID-Controllern
388
Solid State Drives
389
Aufbau eines Serversystems für PostgreSQL
390
Tablespaces
392
Einrichtung von Tablespaces auf dedizierten Laufwerken
393
Verwendung von Tablespaces
393
Verschieben zwischen Tablespaces
395
Tablespace für temporäre Dateien
396
Einrichtung eines dedizierten WAL-Laufwerks
396
Hardwaretests
397
Leistungsmessung mit dd
397
Leistungsmessung mit bonnie++
398
Leistungsmessung mit pgbench
399
Index
403