43

Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

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

Page 2: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

Cédric Villemain

Expertise & DéveloppementFormation

Support & Remote DBA

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 2 / 29

Page 3: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

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

Page 4: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

Réplication

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 4 / 29

Page 5: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

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

Page 6: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

Après le COMMIT: analyse des opérations

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 6 / 29

Page 7: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

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

Page 8: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

Après le COMMIT: empreintes des modi�cations

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 8 / 29

Page 9: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

Système évènementiel

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 9 / 29

Page 10: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

Evènements

• INSERT

• UPDATE

• DELETE

• TRUNCATE

• CREATE TABLE

• ...

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 10 / 29

Page 11: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

Evènements

• INSERT

• UPDATE

• DELETE

• TRUNCATE

• CREATE TABLE

• ...

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 10 / 29

Page 12: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

Evènements

• INSERT

• UPDATE

• DELETE

• TRUNCATE

• CREATE TABLE

• ...

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 10 / 29

Page 13: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

Evènements

• INSERT

• UPDATE

• DELETE

• TRUNCATE

• CREATE TABLE

• ...

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 10 / 29

Page 14: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

Evènements

• INSERT

• UPDATE

• DELETE

• TRUNCATE

• CREATE TABLE

• ...

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 10 / 29

Page 15: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

Evènements

• INSERT

• UPDATE

• DELETE

• TRUNCATE

• CREATE TABLE

• ...

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 10 / 29

Page 16: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

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

Page 17: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

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

Page 18: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

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

Page 19: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

ACTION!

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 12 / 29

Page 20: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

Associer certains évènementsà certaines actions

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 13 / 29

Page 21: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

Trigger

ON INSERT DO ....

...

ROLLBACK;

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 14 / 29

Page 22: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

traitement super�u

...et prend du temps �utilisateur�

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 15 / 29

Page 23: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

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

Page 24: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

perte d'information

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 17 / 29

Page 25: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

Logical Slot

• ON COMMIT only

• Pas de perte

• Commit Timestamp

• Origine

• ...

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 18 / 29

Page 26: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

Logical Slot

• ON COMMIT only

• Pas de perte

• Commit Timestamp

• Origine

• ...

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 18 / 29

Page 27: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

Logical Slot

• ON COMMIT only

• Pas de perte

• Commit Timestamp

• Origine

• ...

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 18 / 29

Page 28: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

Logical Slot

• ON COMMIT only

• Pas de perte

• Commit Timestamp

• Origine

• ...

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 18 / 29

Page 29: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

Logical Slot

• ON COMMIT only

• Pas de perte

• Commit Timestamp

• Origine

• ...

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 18 / 29

Page 30: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

Réplication Logique

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 19 / 29

Page 31: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

Réplication

• Slony / Skytools / Londiste

• pgLogical

• Bi-Directionnal Replication

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 20 / 29

Page 32: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

Réplication

• Slony / Skytools / Londiste

• pgLogical

• Bi-Directionnal Replication

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 20 / 29

Page 33: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

Réplication

• Slony / Skytools / Londiste

• pgLogical

• Bi-Directionnal Replication

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 20 / 29

Page 34: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

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

Page 35: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

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

Page 36: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

Utilisations

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 22 / 29

Page 37: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

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

Page 38: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

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

Page 39: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

• 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

Page 40: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

• Cycle de vie des données

• Trigger asynchrone

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 26 / 29

Page 41: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

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

Page 42: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

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

Page 43: Réplication Logique - pgDay.fr Lille 2016 · 9.1 , Synchronous Replication 9.2 , Refactoring checkpoint group commit 9.3 , Event rigger,T Refactoring 9.4 , Replication Slot / Réplication

Questions ?

C'est à vous!

Cédric Villemain [email protected] Réplication Logique 31 mai 2016 29 / 29