![Page 1: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/1.jpg)
PostgreSQL repliziert:Ein Überblick
Michael Renner
Netways OSDC29. & 30. April 2009
![Page 2: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/2.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Vorstellung● Michael Renner● Sysadmin, DBA, ScrumMaster● Web-Affin● Open Source● Hang zur Perfektion
![Page 3: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/3.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Eine Gebrauchsanleitung● Fragen, ja bitte● Zu Schnell/langsam → do tell!● Workshop! Oder so.● Slides gibt’s nach dem Workshop
![Page 4: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/4.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Die nächsten zwei Stunden● Eine Einleitung● Replikation ist böse... ...aber notwendig● (Datenbank-)Theorie● Replikations-Ansätze● Pause?● Praxis● Zukunft● Best Common Practices
![Page 5: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/5.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Oder auch ganz anders!● Workshop!
– Wer hat Oracle im Einsatz?● Postgres?● MySQL?● Was andres?
– Wer repliziert schon Daten?● Was/Wie?● Gibt es Probleme?
● Hat jemand vor Replikation einzuziehen?● Weiter mit dem Rahmenprogramm?
● Oder lieber was anderes?
![Page 6: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/6.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Eine Begriffserklärung● Replikation
● „Datenverteilung“● Was darfs denn sein?
● „Cluster“?– Automatische Segmentierung & Verteilung?
● vulgo: Sharding, Horizontale Skalierung, Federated Databases, etc.
– Master-Master?– High Availability?
● 99,999% Verfügbarkeit?– Five nines: ~5 Minuten Downtime/Jahr
● DWIM!
![Page 7: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/7.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Die Haltung des Core-Teams
29.5.2008, pgsql-hackers, Tom Lane:● Historically the project policy has been to avoid
putting replication into core PostgreSQL, [..]● However, it is becoming clear that this policy is
hindering acceptance of PostgreSQL to too great an extent, [..]
● [..] it is time to include a simple, reliable basic replication feature in the core system.
![Page 8: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/8.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
„Was bisher geschah“● 7.4.3 (Juni 2004)
● Slony-I (Trigger-Basiert)
● pgpool (Middleware)● 8.2 (Dezember 2006)
● Log Shipping
● 8.4devel (Mai 2008)● Manifest des Core
Teams● 8.4 (Mai 2009)
● :(● Skytools & Freunde
![Page 9: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/9.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
DO NOT USE REPLICATION
![Page 10: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/10.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Populäre Irrtümer
Some people, when confronted with a problem, think
„I know, I'll use database replication.“Now they have two problems.
Frei nach Jamie Zawinski's „I'll use regular expressions“
Gern durchgeführte Simplifizierung der LAMP-Generation.
![Page 11: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/11.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Do NOT use replication● Replication ain't a Silver Bullet
● Zuerst das Problem verstehen, dann nach Lösungen suchen.– Wie lang kann ich jetzt skalieren?– Wo sind die Bottlenecks?– Was für Lösungswege gibt es?– Wie lange skalieren diese?
![Page 12: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/12.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Do NOT use replication● Gesteigerte Komplexität
● In der Architektur– DB Connection Handling (Reader vs. Writer)– Synchrone & Asynchrone Replikation– Was passiert wo?
● Im Operating– Monitoring– Maintenance– Backup & Recovery
![Page 13: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/13.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Do NOT use replication● Es muss nicht immer ein RDBMS sein
● Caching– memcached– Framework-spezifische Lösungen– auch das ist schon Daten-Replikation
● Spezielle Datenbanken– CouchDB– TokyoCabinet
● Alternative Kommunikationswege– Message Queues– Group Communication
![Page 14: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/14.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Do NOT use replication● Ist die Datenbank und Applikation überhaupt
optimiert?● Indizes● Queries & Applikation● Hardware● Postgres Konfiguration
![Page 15: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/15.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Gute Gründe für Replikation
![Page 16: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/16.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Gute Gründe für Replikation● Redundanz & Hochverfügbarkeit
● Redundanz– „Mehr als eins“
● Hochverfügbarkeit– Synchrone Replikation– Automatisches Failover
![Page 17: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/17.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Gute Gründe für Replikation● Datenverteilung
● Knoten mit identen Daten– Skaliert nur bei konstantem „Working Set“ und
gleichbleibenden Write-Aufkommen● Knoten mit unterschiedlichen Daten
– zB Zentrale ↔ Filialen
![Page 18: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/18.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Gute Gründe für Replikation● Horizontale Skalierung
● Kombination aus Partitioning & Replikation● Notwendige Dinge
– Klassifizierung der Daten & Definition der Segmente● zB: Stored Procedures, Applikations-Code
– Verteilung der Daten● zB: dblink, plproxy, pgQ, etc.
– Verteilen der Anfragen● zB: Middleware, Stored Procedures, etc.
● Keine fertigen Lösungen!
![Page 19: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/19.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Gute Gründe für Replikation● Archivierung & Backup
● Komplette Sicherung oft Zeit- und IO-Intensiv● Performance-Einbußen auf Live-System
![Page 20: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/20.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Gute Gründe für Replikation● Warehousing & Datenauswertung
● „Business Intelligence“● Auswerten von Daten in einem (R)DBMS● Weg vom Live-System!
– Lang laufende Queries– Oftmals keine Notwendigkeit für stundenaktuelle Daten
![Page 21: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/21.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Gute Gründe für Replikation● Datenrettung & Forensik● Point In Time Recovery (PITR)
● Erlaubt einen beliebigen Zeitpunkt in der Datenbankhistorie herzustellen
● Nachvollziehbarkeit von Modifikationen● „Rollback“ zu einem Zustand vor einem
„unglücklichen Query“
![Page 22: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/22.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Theorie
![Page 23: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/23.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Theoretisches● Transaktion● ACID● Master & Slave● Synchronität
![Page 24: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/24.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Transaktion● Eine feste Folge von Operationen, die
vollständig oder garnicht ausgeführt wird
BEGIN;
UPDATE accounts SET balance = balance - 100.00 WHERE name = 'Alice';
UPDATE accounts SET balance = balance + 100.00 WHERE name = 'Bob';
COMMIT;
![Page 25: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/25.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
ACID● Atomicity● Consistency● Isolation● Durability
![Page 26: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/26.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
ACID● Atomicity
● Eine Transaktion wird komplett oder garnicht ausgeführt
● Consistency● Der Zustand der Datenbank ist immer konsistent
– Augenmerk auf referentielle Integrität, Validierung von Daten
![Page 27: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/27.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
ACID● Isolation
● Transaktionen sind durch ein definiertes „Isolation Level“ voneinander geschützt
● Durability● Eine Transaktion die erfolgreich „committed“ wurde
muss bestehen bleiben.
![Page 28: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/28.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Master & Slave● Master
● Ist authorative Quelle für Daten● Darf datenverändernde Statements verarbeiten
● Slave● Darf (wenn überhaupt) nur lesende Statements
verarbeiten● Bekommt Daten von einem anderen Knoten
![Page 29: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/29.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Multi-Master● Mehrere „Master“-Server● Zumeist Synchrone Replikation
● oder „Conflict Resolution“-Mechanismen● Triviales Failover● Skaliert nicht
![Page 30: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/30.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Synchronität● Synchrone Replikation
● Commit returned erst, wenn zumindest ein synchron replizierter Knoten geantwortet hat
● Asynchrone Replikation● Commit auf Master darf sofort returnen● Keinerlei Garantie über Zustand & Aktualität von
anderen Knoten
![Page 31: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/31.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Synchronität● Synchrone Replikation
● Langsamer als Single-Server● Benötigt niedrige Latenzen
● Asynchrone Replikation● Slave Lag!
![Page 32: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/32.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Über das Verteilen von
Daten
![Page 33: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/33.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Ansätze● Storage & OS-basierte Methoden● Log-Shipping Systeme● Triggerbasierte Systeme● Middleware● Forks & Patches von und für PostgreSQL
![Page 34: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/34.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Storage & OS Methoden
PersistentStorage
PersistentStorage
COLDCOLD
STANDBY
STANDBY
![Page 35: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/35.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Storage & OS Methoden● Replizieren des Blockdevices
● Verschiedene Lösungen für (a)synchrone Replikation, zB:– DRBD– EMC MirrorView– NetApp SyncMirror
● ACID & synchrone Replikation auf Block-Ebene garantieren jederzeit idente Knoten
![Page 36: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/36.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Storage & OS Methoden● Vorteile
● Datenbankunabhängig● Ermöglicht einfaches „Site-Failover“
● Nachteile● Unflexibelste Lösung● Erfordert Storage-Systeme oder OS-Support● Meistens Cold Standby
![Page 37: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/37.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Log-Shipping Systeme
PersistentStorage
PersistentStorage
TX Logs(WAL)
WARMWARM
STANDBY
STANDBY
Here happensmagic!
![Page 38: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/38.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Log-Shipping Systeme● Verwendet die Transaktionslogs der
Datenbanksysteme● PostgreSQL WAL Shipping● Oracle Data Guard● DB2 HADR
● Auf Slave-Systemen werden kontinuierlich die Änderungen vom Master nachgezogen
● Row-basiert
![Page 39: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/39.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Log-Shipping Systeme● Vorteile
● Geringer Overhead● Hohe Robustheit
● Nachteile● Kann nur komplette Datenbanksysteme replizieren● In Postgres nur asynchrone Warm Standby Slaves
möglich (8.5!)
![Page 40: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/40.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Trigger-basierte Systeme
Table 1 Table 2
LogTable
Table 1 Table 2
Read-Only
Read-OnlySLAVE
SLAVE
![Page 41: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/41.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Trigger-basierte Systeme● Verwenden Trigger & Stored Procedures● Alle Änderungen an Tabelleninhalten werden in
Log-Tables geschrieben● Separate Daemons verteilen Daten an Slaves● Erlaubt verschiedene Master für
unterschiedliche Datenbankobjekte
![Page 42: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/42.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Trigger-basierte Systeme● Vorteile
● Sehr flexibel● Nachteile
● Komplex● Schema-Änderungen nur über Umwege möglich● Hoher Overhead für Writes
– ~2,5x Schreibmenge
![Page 43: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/43.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Middleware
Clients
Virtual
VirtualDatabase
Database
![Page 44: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/44.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Middleware● Sitzt zwischen Datenbank und Client● Simuliert eine virtuelle Datenbank● Komplett eigenständige Software● Kann verschiedenste Aufgaben übernehmen
● Replikation, Sharding● Connection Pooling & Brokering● Load Balancing, HA● Parallelized Query Execution
![Page 45: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/45.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Middleware● Vorteile
● (Teilweise) Datenbankunabhängig● Kann Multi-Master-Szenarien umsetzen
● Nachteile● Sehr komplex● Eigener, separat zu entwickelnder & zu wartender
Layer● (Teilweise) Ressourcenhungrig
![Page 46: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/46.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Patches & Forks
![Page 47: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/47.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Patches & Forks● Komplexe Features die tiefgreifende
Modifikationen an PostgreSQL erfordern● Ein Auszug:
● Greenplum: Greenplum Database– Sharding & Datawarehousing
● Command Prompt: PostgreSQL + Replication– Eingebaute Async Master → Slave Replikation
● EnterpriseDB: Postgres Plus– PL/SQL, Oracle ↔ Postgres Replication,
Datawarehousing
![Page 48: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/48.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Pause!15 Minuten
![Page 49: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/49.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Praxis● Log Shipping
● Vanilla PostgreSQL & pg_standby● Trigger
● Slony-I
![Page 50: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/50.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Write Ahead Log● Enthält alle Änderungen an Datenfiles● Facts
● Zu finden in $PGDATA/pg_xlog● Name enthält 3 Zähler á 32 Bit in Hex-Notation
– zB 00000001000000000000008E– Timeline– Logid– Segmentnummer
● 16MiB Files, in 8KiB Pages unterteilt
![Page 51: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/51.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
WAL cont'd● WAL-Files werden
● Gewechselt & „archiviert“– Wenn sie voll sind– Wenn archive_timeout abgelaufen ist– Manuelle Intervention
● In pg_xlog recycled bzw. gelöscht– Sobald ein WAL-Segment gewechselt wurde...– ...und keine offenen Transaktionen auf sie verweisen
![Page 52: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/52.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
WAL Shipping● Master muss
● Archivieren– archive_mode & archive_command
● Slave benötigt● Base Backup
– pg_start_backup()● recovery.conf● Alle WAL-Files seit dem Base-Backup
![Page 53: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/53.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Slony-I● Begrifflichkeiten
● Cluster● Node● Replication Set● Origin, Provider, Subscriber● Slon daemons● slonik
![Page 54: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/54.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Slony-I Schematisch
Table 1
Replication Set
NodeOriginProvider Subscriber
Cluster
Sequence 1 Table 1 Sequence 1
Slon
![Page 55: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/55.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Neu in 8.4● On-Disk Free Space & Visibility Map● Parallel Restore● Auto-Explain● Common Table Expressions & Recursive Joins● Windowing Functions● Performance...● ...und noch einiges mehr...
![Page 56: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/56.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
8.5 and beyond● (Synchronous) Native WAL replication
● NTT Projekt● 8.5!
● Read-Only Logshipping Slaves● Simon Riggs/2nd Quadrant Projekt● 8.5!
● Bestrebungen in Richtung Sharding● Foreign Data Wrappers, SQL/MED, SkyTools, etc.● Infrastruktur, Werkzeuge, Best Common Practices...
![Page 57: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/57.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Best Common Practices● Verbindliche Richtlinien zum Einziehen von
Datenbank-Replikation in Ihrer Infrastruktur● Planung (Jetzt & Zukunft)● Dokumentation (Architektur, Naming conventions)● Prozesse (DDL, Reintegration nach Ausfall, etc.)● Monitoring (Slave Lag, Performance, etc.)● Desaster-Szenarien (Warme Failover-Server, etc.)● Hardwarekosten ein Server:
– entspricht ~80 Arbeitsstunden eines Angestellten– oder ~30 Arbeitsstunden eines externen Dienstleisters
![Page 58: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/58.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Common Use Cases● Oder: Was soll ich jetzt eigentlich verwenden?!● Still no Silver Bullets
● Log Shipping (pg_standby, walmgr, etc)– Backup– Warehousing– Failover
● Slony– Online Slaves mit geringer Schreiblast– Dezentrale Datenquellen
● Alles andere: RESEARCH
![Page 59: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/59.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Interessante Projekte● Liste anbei● TMTOWTDI● Größte Userbasis derzeit hinter
● Log shipping● Slony-I● Skytools
![Page 60: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/60.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Community● IRC
● irc.freenode.net, #postgresql, #postgresql-de● Mailinglisten
● pgsql-general, pgsql-performance, pgsql-de-allgemein
● Web● http://postgresql.org/● http://wiki.postgresql.org/● http://pgug.de/
![Page 61: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/61.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Danke!Fragen?
[email protected] @ #postgresql(-de), Freenode
![Page 62: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/62.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
Linkshttp://wiki.postgresql.org/wiki/Replication,_Clustering,_and_Connection_Pooling
http://www.postgresql.org/community/lists/
http://wiki.postgresql.org/wiki/Skytools
![Page 63: PostgreSQL repliziert: Ein Überblick Michael Rennerblogs.amd.co.at/robe/2009/05/02/osdc-pgreplikation-web.pdf · 7.4.3 (Juni 2004) Slony-I (Trigger-Basiert) pgpool (Middleware) 8.2](https://reader033.vdokument.com/reader033/viewer/2022041423/5e20db5f0cfaec1bfc5290bd/html5/thumbnails/63.jpg)
Michael RennerPostgreSQL repliziert: Ein Überblick
ReplikationslösungenProdukt/Projekt Art Lizenz Status Linkwalmgr Log Shipping BSD Productionsynch rep Log Shipping BSD alphaHot Standby Log Shipping BSD alphaSlony-I Trigger-Basiert BSD ProductionBucardo Trigger-Basiert BSD ProductionLondiste & pgQ Trigger-Basiert BSD ProductionSequioa & Tungsten Middleware Apache Productionpgpool-II Middleware BSD ProductionPgBouncer Middleware BSD ProductionPostgreSQL + Replication Fork BSD? ProductionGreenplum Database Fork kommerziell ProductionPostgres Plus AS Fork kommerziell ProductionPL/Proxy Library BSD Production
https://developer.skype.com/SkypeGarage/DbProjects/SkyTools/WalMgrhttp://wiki.postgresql.org/wiki/NTT's_Development_Projects#Synch_Rephttp://wiki.postgresql.org/wiki/Hot_Standbyhttp://www.slony.info/http://bucardo.org/https://developer.skype.com/SkypeGarage/DbProjects/SkyToolshttp://community.continuent.com/community/sequoiahttp://pgpool.projects.postgresql.org/https://developer.skype.com/SkypeGarage/DbProjects/PgBouncerhttp://www.commandprompt.com/products/mammothreplicator/http://www.greenplum.com/products/greenplum-database/http://www.enterprisedb.com/products/postgres_plus_as/overview.dohttps://developer.skype.com/SkypeGarage/DbProjects/PlProxy