PostgreSQL-Administration, 2nd Edition

Book description

PostgreSQL - das fortschrittlichste Open-Source-Datenbankmanagementsystem der Welt. So lautet weithin unangefochten seit einem Jahrzehnt der Untertitel zu PostgreSQL. Mittlerweile ist es millionenfach im Einsatz, Teil der kritischen öffentlichen Infrastruktur des Internets und ein zentrales Element in der Zukunft der Datenbankwelt. Die zweite Auflage wurde von den Autoren, die auch Core-Entwickler sind, auf Version 9 aktualisiert.

Table of contents

  1. PostgreSQL-Administration
  2. Vorwort
    1. Zielgruppe
    2. Struktur dieses Buchs
    3. In diesem Buch behandelte Versionen
    4. Neues in der zweiten Auflage
    5. Typografische Konventionen
    6. Danksagungen
  3. 1. Installation
    1. Softwareinstallation
      1. Versionierung
      2. Paketinstallation
        1. Debian und Ubuntu
        2. Red Hat
        3. SUSE
      3. Quellcode bauen
      4. Contrib
    2. PostgreSQL einrichten
      1. Datenverzeichnis initialisieren
        1. Datenverzeichnis bestimmen
        2. Benutzerkonto einrichten
        3. Datenverzeichnis initialisieren
      2. Server starten
        1. Server starten mit Programm postgres
        2. Server starten mit dem Programm pg_ctl
        3. Server mit Init-Skript starten
      3. Server anhalten
        1. Server per Signal anhalten
        2. Server anhalten mit dem Programm pg_ctl
        3. Server anhalten mit Init-Skript
      4. Server neu starten oder neu laden
      5. Nächste Schritte
    3. Upgrades durchführen
      1. Kleine und große Upgrades
      2. Upgrade mit pg_dumpall
      3. Upgrade mit pg_upgrade
      4. Upgrade durch Replikation
  4. 2. Konfiguration
    1. Allgemeines
      1. Die Datei postgresql.conf
        1. Syntax
        2. include
        3. Änderungen laden
      2. Kommandozeile
      3. PGOPTIONS
      4. SET, RESET und SHOW
      5. Einstellungen für Datenbanken und Rollen
      6. Präzedenz
    2. Einstellungen
      1. Verbindungskontrolle
        1. listen_addresses
        2. port
        3. max_connections
        4. superuser_reserved_connections
        5. ssl
      2. Speicherverwaltung
        1. shared_buffers
        2. temp_buffers
        3. work_mem
        4. maintenance_work_mem
        5. max_fsm_pages
        6. max_fsm_relations
      3. Wartung: Vacuum und Autovacuum
        1. autovacuum
        2. autovacuum_max_workers
        3. autovacuum_naptime
        4. Scale Factor und Threshold
      4. Transaktionslog
        1. fsync
        2. wal_buffers
        3. synchronous_commit
        4. wal_writer_delay
        5. checkpoint_segments
        6. checkpoint_timeout
        7. checkpoint_warning
        8. checkpoint_completion_target
        9. full_page_writes
        10. wal_level
        11. archive_mode
        12. archive_command
        13. archive_timeout
        14. hot_standby
        15. max_wal_senders
        16. wal_sender_delay
        17. max_standby_archive_delay
        18. max_standby_streaming_delay
        19. wal_keep_segments
        20. vacuum_defer_cleanup_age
      5. Planereinstellungen
        1. Plantypen
          1. enable_seqscan
          2. enable_indexscan
          3. enable_bitmapscan
          4. enable_nestloop
          5. enable_hashjoin
          6. enable_mergejoin
          7. enable_hashagg
          8. enable_sort
          9. enable_tidscan
          10. enable_material
        2. Kostenparameter
          1. seq_page_cost
          2. random_page_cost
          3. cpu_tuple_cost
          4. cpu_index_tuple_cost
          5. cpu_operator_cost
          6. effective_cache_size
        3. Andere Planereinstellungen
          1. default_statistics_target
          2. cursor_tuple_fraction
      6. Logging
        1. Wohin soll geloggt werden?
          1. log_destination
          2. CSV-Log
          3. logging_collector
          4. log_directory
          5. log_filename
          6. log_rotation_age
          7. log_rotation_size
          8. log_truncate_on_rotation
          9. syslog_facility
          10. syslog_ident
        2. Wann soll geloggt werden?
          1. client_min_messages
          2. log_min_messages
          3. log_autovacuum_min_duration
          4. log_error_verbosity
          5. log_min_error_statement
          6. log_min_duration_statement
        3. Was soll geloggt werden?
          1. log_checkpoints
          2. log_connections
          3. log_disconnections
          4. log_duration
          5. log_hostname
          6. log_line_prefix
          7. log_lock_waits
          8. log_statement
          9. log_temp_files
          10. log_timezone
      7. Statistiken
        1. track_activities
        2. track_activity_query_size
        3. track_counts
        4. track_functions
        5. update_process_title
        6. stats_temp_directory
      8. Lokalisierung
        1. client_encoding
        2. datestyle
        3. intervalstyle
        4. lc_collate
        5. lc_ctype
        6. lc_messages
        7. lc_monetary
        8. lc_numeric
        9. server_encoding
      9. Diverses
        1. bytea_output
        2. custom_variable_classes
        3. effective_io_concurrency
        4. search_path
        5. server_version
        6. server_version_num
        7. shared_preload_libraries
        8. statement_timeout
        9. timezone
    3. Betriebssystemeinstellungen
      1. Shared Memory
      2. Memory Overcommit
    4. Zusammenfassung
  5. 3. Wartung
    1. VACUUM
      1. Multiversion Concurrency Control
      2. Der VACUUM-Befehl
        1. Einfaches VACUUM
        2. VACUUM FULL
        3. Einfrieren
      3. Die Visibility Map
      4. Die Free Space Map
        1. Einstellung der Free Space Map bis PostgreSQL 8.3
        2. pg_freespacemap
      5. Überwachung von VACUUM
    2. ANALYZE
    3. Das Programm vacuumdb
    4. Autovacuum
      1. Konfiguration
        1. autovacuum
        2. log_autovacuum_min_duration
        3. autovacuum_max_workers
        4. autovacuum_naptime
        5. autovacuum_freeze_max_age, vacuum_freeze_min_age
        6. vacuum_freeze_table_age
        7. Scale Factor und Threshold
      2. Überwachung von Autovacuum
      3. Tabellenspezifische Einstellungen für Autovacuum
        1. Speicheroptionen für tabellenspezifische Einstellungen
        2. Die Systemtabelle pg_autovacuum
    5. Kostenbasiert verzögertes Vacuum
      1. Konfiguration
        1. vacuum_cost_delay
        2. vacuum_cost_limit
        3. vacuum_cost_page_hit
        4. vacuum_cost_page_miss
        5. vacuum_cost_page_dirty
        6. autovacuum_vacuum_cost_delay
        7. autovacuum_vacuum_cost_limit
    6. Reindizierung
    7. Weitere Wartungsaufgaben
    8. Wartungsstrategie
  6. 4. Datensicherung
    1. Datensicherungsstrategie
      1. Allgemeines über Sicherheit
      2. Risiken
      3. Überlegungen zur Datensicherung
        1. Wohin sichern?
        2. Wie oft sichern?
        3. Was sichern?
        4. Wie wiederherstellen?
        5. Was kostet das?
    2. Datensicherungsmethoden für PostgreSQL
      1. RAID
      2. Replikation
      3. Dateisystemsicherung
        1. Dateisystem sichern
        2. Snapshots
        3. Wiederherstellung
      4. Dumps
        1. Dumps ausführen
        2. Datensicherung auf andere Rechner
        3. Automatisierung
        4. Sicherungsstände rotieren
        5. Wiederherstellung
        6. Keine inkrementelle Sicherung
        7. Andere Ausgabeformate
      5. WAL-Archivierung und Point-in-Time-Recovery
        1. Konzepte
        2. Archivierung konfigurieren
        3. Archivierungsintervalle
        4. Basissicherungen
        5. Organisation der Sicherung
        6. Bereinigung der Sicherung
        7. Wiederherstellung
        8. Point-in-Time-Recovery
        9. Zeitleisten
        10. Einschätzung
        11. Hot Standby
  7. 5. Überwachung
    1. Was überwachen?
      1. Datenbankaktivität
      2. Sperren
      3. Logdateien
      4. Betriebssystem
      5. Datensicherung
    2. Wie überwachen?
      1. Unix-Werkzeuge
        1. ps
        2. top
        3. ptop
        4. iotop
        5. vmstat
        6. iostat
      2. Statistiktabellen
        1. Aktivität
        2. Datenbanken
        3. Tupelstatistiken
        4. Background Writer
        5. Blockstatistiken
        6. Statistiken zurücksetzen
        7. Sperren
        8. Informationen über Objektgrößen
        9. pg_stat_statements
      3. Grafische Administrationsprogramme
      4. Überwachungswerkzeuge
        1. Nagios
        2. Munin
        3. Sysstat
        4. pgFouine
    3. Und nun?
  8. 6. Wiederherstellung, Reparatur und Vorsorge
    1. Wiederherstellung und Reparatur
      1. Softwarefehler und Abstürze
        1. Clientanwendungsabstürze
        2. Datenbankserverabstürze
        3. Betriebssystemabstürze
      2. Hardwareausfälle
        1. Stromausfall
        2. Festplattenausfall
        3. Speicherfehler
      3. Bedienfehler und versehentliches Löschen
        1. Versehentliches Löschen (DELETE)
        2. Datei gelöscht
        3. Tabelle gelöscht
        4. Index gelöscht
        5. Datenbank gelöscht
      4. Korrupte Dateien
        1. Server startet nicht
        2. Write-Ahead-Log defekt
        3. Index defekt
        4. Tabelle defekt
    2. Vorsorge
  9. 7. Sicherheit, Rechteverwaltung, Authentifizierung
    1. Allgemeines über Sicherheit
    2. Benutzerverwaltung
      1. Benutzer, Gruppen, Rollen
      2. Benutzer anlegen
      3. Rollenattribute
        1. Login
        2. Superuser
        3. Attribut Datenbanken erzeugen
        4. Attribut zum Erzeugen von Rollen
        5. Passwörter
        6. Passwortgültigkeit
        7. Verbindungslimits
      4. Rollen ändern
      5. Gruppenrollen anlegen und verwalten
      6. Rollen anzeigen
      7. Rollen löschen
      8. Benutzer und Rollen in der Praxis
    3. Sichere Datenübertragung
      1. Sichere Datenübertragung mit SSL
      2. Sichere Datenübertragung mit Tunneln
    4. Zugangskontrolle
      1. Die Datei pg_hba.conf
        1. Typ
        2. Datenbankname
        3. Benutzername
        4. Adresse
        5. Methode
      2. Authentifizierungsmethoden
        1. Trust
        2. Reject
        3. Passwortauthentifizierung
          1. Die Datei .pgpass
        4. Ident-basierte Authentifizierung
        5. Authentifizierung mit Kerberos, GSSAPI und SSPI
        6. Authentifizierung mit PAM
        7. Authentifizierung mit LDAP
        8. Authentifizierung mit RADIUS
        9. Clientauthentifizierung mit SSL
      3. Authentifizierungsprobleme
      4. Zugangskontrolle in der Praxis
    5. Rechteverwaltung
      1. Privilegien gewähren und entziehen
      2. Eigentümerrechte
      3. Privilegtypen
        1. Privilegien für Tabellen und Sichten
        2. Privilegien für Sequenzen
        3. Privilegien für Funktionen
        4. Privilegien für Schemas
        5. Privilegien für Datenbanken
        6. Privilegien für Fremddaten-Wrapper
        7. Privilegien für Fremdserver
        8. Privilegien für Sprachen
        9. Privilegien für Large Objects
        10. Privilegien für Tablespaces
      4. Vorgabeprivilegien
      5. Grant-Optionen
      6. Privilegien anzeigen
      7. Rechteverwaltung in der Praxis
  10. 8. Performance-Tuning
    1. Ablauf der Befehlsverarbeitung
      1. Empfang über Netzwerk
      2. Parser
      3. Rewriter
      4. Planer/Optimizer
      5. Executor
      6. Ergebnis über Netzwerk
    2. Flaschenhälse
      1. CPU
      2. RAM
      3. Festplattendurchsatz
      4. Festplattenlatenz
      5. Festplattenrotation
      6. Netzwerkverbindung
    3. Indexe einsetzen
      1. Einführung
      2. Indextypen
      3. Mehrspaltige Indexe und Indexkombination
      4. Indexe über Ausdrücke
      5. Unique Indexe
      6. Partielle Indexe
      7. Operatorklassen
      8. Indizierung von Mustersuchen
      9. Indexe und Fremdschlüssel
      10. Nebenläufiges Bauen von Indexen
      11. Optimierung von CREATE INDEX
    4. Ausführungspläne
      1. Planknoten
      2. Pläne ansehen und analysieren
        1. EXPLAIN und EXPLAIN ANALYZE
        2. Pläne mit Bitmap Index Scan
        3. Pläne und LIMIT
        4. Pläne mit Indexscan
        5. Pläne mit Sortieren
        6. Pläne auswählen und vergleichen
        7. Join-Pläne
        8. auto_explain
      3. Statistiken und Kostenparameter
        1. Statistiken für den Planer
        2. ANALYZE
        3. Kostenparameter
          1. seq_page_cost
          2. random_page_cost
          3. cpu_tuple_cost
          4. cpu_index_tuple_cost
          5. cpu_operator_cost
          6. effective_cache_size
    5. Partitionierung
      1. Tabellen partitionieren
      2. Constraint Exclusion
      3. Partitionierte Tabellen beschreiben
      4. Einschätzung
    6. Befüllen der Datenbank
      1. Transaktionen
      2. COPY statt INSERT
      3. Indexe, Fremdschlüssel, Reihenfolge
      4. Serverkonfiguration
        1. Checkpoints
        2. Speicher
        3. Archivierung
        4. Fsync
        5. Überblick
      5. Nach dem Laden
  11. 9. Replikation und Hochverfügbarkeit
    1. Begriffserklärung
      1. Connection Pooling
      2. Clustering
        1. Shared Storage
        2. Shared Nothing
        3. Sharding
      3. Replikation
        1. Master/Slave-Replikation
        2. Multimaster-Replikation
      4. Standby-Systeme
    2. Slony-I
      1. Konzeption
      2. Installation
        1. Auswahl der Slony-I-Version
        2. Debian
        3. Quelltextinstallation
      3. Die Kommandosprache slonik
        1. slonik-Präambel
          1. CLUSTER NAME
          2. NODE ADMIN CONNINFO
        2. Initialisieren eines Clusters
          1. INIT CLUSTER
        3. Verwalten und Konfigurieren von Clustern
          1. CLONE PREPARE, CLONE FINISH
          2. CREATE SET
          3. DROP NODE
          4. DROP PATH
          5. EXECUTE SCRIPT
          6. FAILOVER
          7. LOCK SET, UNLOCK SET
          8. MERGE SET
          9. MOVE SET
          10. RESTART NODE
          11. SET ADD TABLE
          12. SET ADD SEQUENCE
          13. SET DROP TABLE
          14. SET DROP SEQUENCE
          15. STORE NODE
          16. STORE PATH
          17. SUBSCRIBE SET
          18. UNINSTALL NODE
          19. UNSUBSCRIBE SET
          20. UPDATE FUNCTIONS
          21. WAIT FOR EVENT
      4. Der erste Slony-I-Cluster
        1. Das Datenbankschema
        2. Einrichten der Authentifizierung
        3. Einrichten des Datenbankschemas
        4. Definition des Clusters
        5. Initialisieren des Clusters
        6. Starten der Replikationsserver
        7. Erstellen der Sets
        8. Abonnieren der Sets
      5. Überwachung und Wartung
        1. Lagtime überwachen
        2. slon-Prozesse überwachen
        3. Speicherverbrauch überwachen
      6. Optimierung
        1. Subscriber mit hoher oder anwachsender Lagtime
        2. Hohe I/O-Last auf Origin
        3. slon-Prozesse und Instabilitäten
      7. Zusammenfassung
    3. Hot Standby
      1. Planung
      2. Konfiguration
      3. Failover
      4. Verwalten von WAL-Archiven
      5. Einschränkungen
      6. Zusammenfassung
    4. Streaming Replication
      1. Planung
      2. Konfiguration
      3. Überwachung
      4. Zusammenfassung
    5. WAL-Replikation mit pg_standby
      1. Konfiguration
      2. Failover mit pg_standby
    6. pgpool-II
      1. Installation
      2. Konfiguration
      3. pgpool und Slony
      4. pgpool und Streaming Replication
    7. PgBouncer
      1. Installation
      2. Pool-Modi
      3. Konfiguration
      4. Starten
      5. Überwachung und Wartung
    8. PL/Proxy
      1. Installation
      2. Konfiguration
        1. plproxy.get_cluster_version
        2. plproxy.get_cluster_config
        3. plproxy.get_cluster_partitions
      3. Beispiel
      4. Zusammenfassung
    9. DRBD
      1. Installation
      2. Konfiguration
      3. Integration mit Heartbeat
        1. Die Konfigurationsdatei /etc/ha.d/ha.cf
        2. Die Konfigurationsdatei /etc/ha.d/authkeys
        3. Die Konfigurationsdatei /etc/ha.d/haresources
        4. Abschließendes
    10. Zusammenfassung
  12. 10. Hardware
    1. Arbeitsspeicher
    2. Prozessor
    3. Festspeichersystem
      1. Anforderungen an das Festspeichersystem
      2. Größe des Festspeichersystems
      3. Anbindung des Festspeichersystems
      4. Geschwindigkeit und Redundanz
        1. RAID 1
        2. RAID 5
        3. RAID 6
        4. RAID 10
        5. RAID 15
        6. Redundanz in NAS- oder SAN-Systemen
      5. Datensicherheit bei Festplattenlaufwerken und RAID-Controllern
      6. Solid State Drives
    4. Aufbau eines Serversystems für PostgreSQL
    5. Tablespaces
      1. Einrichtung von Tablespaces auf dedizierten Laufwerken
      2. Verwendung von Tablespaces
      3. Verschieben zwischen Tablespaces
      4. Tablespace für temporäre Dateien
      5. Einrichtung eines dedizierten WAL-Laufwerks
    6. Hardwaretests
      1. Leistungsmessung mit dd
      2. Leistungsmessung mit bonnie++
      3. Leistungsmessung mit pgbench
  13. A. Über die Autoren
  14. Stichwortverzeichnis
  15. Kolophon

Product information

  • Title: PostgreSQL-Administration, 2nd Edition
  • Author(s): Peter Eisentraut, Bernd Helmle
  • Release date: May 2012
  • Publisher(s): O'Reilly Verlag
  • ISBN: 9783897216617