Réplication Logique
pgDay.fr Lille 2016
Cédric Villemain [email protected]
31 mai 2016
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 1 / 29
Cédric Villemain
Expertise & DéveloppementFormation
Support & Remote DBA
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 2 / 29
2ndQuadrant
Sponsor Platine de PostgreSQL
• 9.1, Synchronous Replication
• 9.2, Refactoring checkpoint group commit
• 9.3, Event Trigger, Refactoring
• 9.4, Replication Slot / Réplication Logique
• 9.5, Replication Origin / Commit Timestamp
• 9.6, Logical WAL messaging
• NEXT, Timeline Switch / Integrated Failover
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 3 / 29
Opérations Logiques
BEGIN;
INSERT INTO country VALUES (1, 'france') ;
INSERT INTO towns VALUES (default, 1 , 'lille');
COMMIT;
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 5 / 29
Après le COMMIT: analyse des opérations
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 6 / 29
Opérations Physiques
fopen(1, ...)
fseek(1, ...)
fwrite(1, ...)
fopen(2, ...)
fseek(2, ...)
fwrite(2, ...)
...
fsync()
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 7 / 29
Après le COMMIT: empreintes des modi�cations
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 8 / 29
Evènements
• INSERT
• UPDATE
• DELETE
• TRUNCATE
• CREATE TABLE
• ...
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 10 / 29
Evènements
• INSERT
• UPDATE
• DELETE
• TRUNCATE
• CREATE TABLE
• ...
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 10 / 29
Evènements
• INSERT
• UPDATE
• DELETE
• TRUNCATE
• CREATE TABLE
• ...
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 10 / 29
Evènements
• INSERT
• UPDATE
• DELETE
• TRUNCATE
• CREATE TABLE
• ...
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 10 / 29
Evènements
• INSERT
• UPDATE
• DELETE
• TRUNCATE
• CREATE TABLE
• ...
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 10 / 29
Evènements
• INSERT
• UPDATE
• DELETE
• TRUNCATE
• CREATE TABLE
• ...
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 10 / 29
Evènements
• Trigger: Déclencheur
• Logical Slot: Déclencheur / Accumulateur / Communication
• LISTEN / NOTIFY: Communication
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 11 / 29
Evènements
• Trigger: Déclencheur
• Logical Slot: Déclencheur / Accumulateur / Communication
• LISTEN / NOTIFY: Communication
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 11 / 29
Evènements
• Trigger: Déclencheur
• Logical Slot: Déclencheur / Accumulateur / Communication
• LISTEN / NOTIFY: Communication
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 11 / 29
Associer certains évènementsà certaines actions
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 13 / 29
Trigger
ON INSERT DO ....
...
ROLLBACK;
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 14 / 29
traitement super�u
...et prend du temps �utilisateur�
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 15 / 29
LISTEN / NOTIFY
# ... ON INSERT DO ....
# NOTIFY channel_1, 'id:1,country:france'
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 16 / 29
Logical Slot
• ON COMMIT only
• Pas de perte
• Commit Timestamp
• Origine
• ...
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 18 / 29
Logical Slot
• ON COMMIT only
• Pas de perte
• Commit Timestamp
• Origine
• ...
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 18 / 29
Logical Slot
• ON COMMIT only
• Pas de perte
• Commit Timestamp
• Origine
• ...
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 18 / 29
Logical Slot
• ON COMMIT only
• Pas de perte
• Commit Timestamp
• Origine
• ...
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 18 / 29
Logical Slot
• ON COMMIT only
• Pas de perte
• Commit Timestamp
• Origine
• ...
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 18 / 29
Réplication
• Slony / Skytools / Londiste
• pgLogical
• Bi-Directionnal Replication
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 20 / 29
Réplication
• Slony / Skytools / Londiste
• pgLogical
• Bi-Directionnal Replication
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 20 / 29
Réplication
• Slony / Skytools / Londiste
• pgLogical
• Bi-Directionnal Replication
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 20 / 29
pgLogical
• Evènement -> Logical Decoder(Callback) -> Logical Slot
• Logical Slot <�> Logical Consummer -> ?
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 21 / 29
pgLogical
• Evènement -> Logical Decoder(Callback) -> Logical Slot
• Logical Slot <�> Logical Consummer -> ?
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 21 / 29
Réplication
• Réplication partielle
• Réplication croisée et bi-directionnelle (�multi-maitre�)
• Schémas di�érents
• Aggrégation, centralisation, séparation, ...
• Mise à jour PostgreSQL
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 23 / 29
Extract Load Transform
• pas ETL mais ELT
• En continu
• pgLogical -> Extract Load
• Triggers on Apply -> Transform
• Alimentation d'un système tiers (solR par exemple)
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 24 / 29
• Partitionnement Horizontal
• Répartition de charge
• Audit / Historisation (merci commit timestamp!)
• Archivage de données
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 25 / 29
• Cycle de vie des données
• Trigger asynchrone
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 26 / 29
Future
• Timeline Following
• Integrated Failover
• Row Control
• Réplication en Cascade
• 10 : Réplication Logique intégrée
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 27 / 29
Ressources
• Logical Decoding:https://www.postgresql.org/docs/current/static/logicaldecoding.html
• pglogical: http://2ndquadrant.com/en/resources/pglogical/
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 28 / 29
Questions ?
C'est à vous!
Cédric Villemain [email protected] Réplication Logique 31 mai 2016 29 / 29