O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

PostgreSQL-Administration, 3rd Edition

Book Description

PostgreSQL hat sich bei professionellen Datenbankadministratoren als hoch performantes und robustes Datenbanksystem durchgesetzt. PostgreSQL ist freie Software, wird seit Ende der 80er Jahre von einer engagierten Community ständig weiterentwickelt und besitzt die Eigenschaften, Zuverlässigkeit und Performance kommerzieller Datenbanksysteme. Die Autoren sind aktive Entwicklungsmitglieder der PostgreSQL Community und geschätzte Datenbankexperten. Die 3. Auflage von PostgreSQL Administration behandelt die im September 2012 erschienene Version 9.2. Die neue Version enthält gerade im Bereich Replikation, Konfiguration und Performance viele Verbesserungen.

Table of Contents

  1. Vorwort
    1. Zielgruppe
    2. Struktur dieses Buchs
    3. In diesem Buch behandelte Versionen
    4. Neues in der dritten Auflage
    5. Typografische Konventionen
    6. Danksagungen
  2. 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
  3. 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
      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
        21. wal_receiver_status_interval
        22. hot_standby_feedback
      5. Planereinstellungen
        1. Plantypen
          1. enable_seqscan
          2. enable_indexscan
          3. enable_indexonlyscan
          4. enable_bitmapscan
          5. enable_nestloop
          6. enable_hashjoin
          7. enable_mergejoin
          8. enable_hashagg
          9. enable_sort
          10. enable_tidscan
          11. 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. track_io_timing
        6. update_process_title
        7. 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. local_preload_libraries
        9. statement_timeout
        10. timezone
    3. Betriebssystemeinstellungen
      1. Shared Memory
      2. Memory Overcommit
    4. Zusammenfassung
  4. 3. Wartung
    1. VACUUM
      1. Multiversion Concurrency Control
      2. Der VACUUM-Befehl
        1. Einfaches VACUUM
        2. VACUUM FULL
        3. Einfrieren
      3. Die Free Space Map
      4. Die Visibility Map
      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
    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
  5. 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. Basissicherung von Hand
        6. Organisation der Sicherung
        7. Bereinigung der Sicherung
        8. Wiederherstellung
        9. Point-in-Time-Recovery
        10. Zeitleisten
        11. Einschätzung
        12. Hot Standby
  6. 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. Replikationsstatistiken
        7. Statistiken zurücksetzen
        8. Sperren
        9. Informationen über Objektgrößen
        10. pg_stat_statements
      3. Grafische Administrationsprogramme
      4. Überwachungswerkzeuge
        1. Nagios
        2. Munin
        3. Sysstat
        4. pgFouine
        5. pgBadger
    3. Und nun?
  7. 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
  8. 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 zum Erzeugen von Datenbanken
        4. Attribut zum Erzeugen von Rollen
        5. Replikation
        6. Passwörter
        7. Passwortgültigkeit
        8. 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. Peer-Authentifizierung
        6. Authentifizierung mit Kerberos, GSSAPI und SSPI
        7. Authentifizierung mit PAM
        8. Authentifizierung mit LDAP
        9. Authentifizierung mit RADIUS
        10. 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
        11. Privilegien für Typen
      4. Vorgabeprivilegien
      5. Grant-Optionen
      6. Privilegien anzeigen
      7. Rechteverwaltung in der Praxis
  9. 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. HOT Updates
      11. Nebenläufiges Bauen von Indexen
      12. 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 Index-Only-Scan
        6. Pläne mit Sortieren
        7. Pläne auswählen und vergleichen
        8. Join-Pläne
        9. 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. Ungeloggte Tabellen
    6. Partitionierung
      1. Tabellen partitionieren
      2. Constraint Exclusion
      3. Partitionierte Tabellen beschreiben
      4. Einschätzung
    7. 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
  10. 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. Hot Standby
      1. Planung
      2. Konfiguration
      3. Failover
      4. Verwalten von WAL-Archiven
      5. Einschränkungen
      6. Zusammenfassung
    3. Streaming Replication
      1. Planung
      2. Konfiguration
        1. Asynchrone Replikation
        2. Synchrone Replikation
        3. Kaskadierende Replikation und Änderungen der Timeline
      3. Überwachung
      4. Zusammenfassung
    4. WAL-Replikation mit pg_standby
      1. Konfiguration
      2. Failover mit pg_standby
    5. Slony-I
      1. Konzeption
      2. Bevorzugte Anwendungsgebiete
      3. Installation
        1. Auswahl der Slony-I-Version
        2. Debian
        3. Quelltextinstallation
      4. 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
      5. 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
      6. Überwachung und Wartung
        1. Lagtime überwachen
        2. slon-Prozesse überwachen
        3. Speicherverbrauch überwachen
      7. Optimierung
        1. Subscriber mit hoher oder anwachsender Lagtime
        2. Hohe I/O-Last auf Origin
        3. slon-Prozesse und Instabilitäten
      8. Zusammenfassung
    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
      6. PgBouncer und Skalierung mit vielen Datenbankverbindungen
    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 Pacemaker
        1. Grundlegende Konfiguration
        2. Einrichten der Cluster Ressourcen
        3. Konfiguration von Ressourcen
        4. Wartung
        5. STONITH - Shoot The Other Node In The Head
    10. Zusammenfassung
  11. 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 0
        2. RAID 1
        3. RAID 5
        4. RAID 6
        5. RAID 10
        6. RAID 15
        7. 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
  12. Index
  13. Kolophon
  14. Copyright