Les outils de réplication

Module W3

Dalibo SCOP

24.04

17 avril 2024

Sur ce document

Formation Module W3
Titre Les outils de réplication
Révision 24.04
PDF https://dali.bo/w3_pdf
EPUB https://dali.bo/w3_epub
HTML https://dali.bo/w3_html
Slides https://dali.bo/w3_slides
TP https://dali.bo/w3_tp
TP (solutions) https://dali.bo/w3_solutions

Licence Creative Commons CC-BY-NC-SA

Cette formation est sous licence CC-BY-NC-SA. Vous êtes libre de la redistribuer et/ou modifier aux conditions suivantes :

  • Paternité
  • Pas d’utilisation commerciale
  • Partage des conditions initiales à l’identique

Marques déposées

PostgreSQL® Postgres® et le logo Slonik sont des marques déposées par PostgreSQL Community Association of Canada.

Versions de PostgreSQL couvertes

Ce document ne couvre que les versions supportées de PostgreSQL au moment de sa rédaction, soit les versions 12 à 16.

Les outils de réplication

PostgreSQL

Introduction

  • Les outils à la rescousse !
    • (Re)construction d’un secondaire
    • Log shipping & PITR
    • Promotion automatique

Au menu

  • (Re)construction d’un secondaire
    • outils de copie
    • pg_rewind
  • Log shipping & PITR
    • pgBackRest
    • Barman
  • Promotion automatique
    • Patroni
    • repmgr
    • PAF

(Re)construire un secondaire

  • pg_basebackup
  • rsync
  • outils PITR
  • pg_rewind

(Re)construction d’un secondaire : pg_basebackup

  • Simple et pratique
  • …mais recopie tout !

(Re)construction d’un secondaire : script rsync

  • Intérêts :
    • reprendre des transferts interrompus
    • compression
  • Prévoir :
    • pg_backup_start()/pg_backup_stop()
    • rsync --whole-file
    • les tablespaces
    • ne pas tout copier !
    • postgresql.conf

(Re)construction d’un secondaire : outil PITR

  • Le plus confortable
  • Ne charge pas le primaire
  • Mode « delta »
pgbackrest --stanza=instance      --type=standby      --delta  \
  --repo1-host=depot --repo1-host-user=postgres --repo1-host-port=22 \
  --pg1-path=/var/lib/postgresql/14/secondaire \
  --recovery-option=primary_conninfo='host=principal port=5433 user=replicator' \
  --recovery-option=primary_slot_name='secondaire' \
  --target-timeline=latest \
  restore

pg_rewind

  • Outil inclus
  • Évite la reconstruction complète malgré une divergence
  • Pré-requis :
    • data-checksums
    • ou wal_log_hints = on
    • tous les WAL depuis la divergence
    • full_page_writes = on (défaut)
  • Revient au point de divergence

Log shipping & PITR

  • Utilisation des archives pour :
    • se prémunir du décrochage d’un secondaire
    • une sauvegarde PITR
  • Utilisation des sauvegardes PITR pour :
    • resynchroniser un serveur secondaire

pgBackRest

  • pgbackrest restore
    • --delta
    • --type=standby
    • --recovery-option

barman

  • barman recover
    • --standby-mode
    • --target-*

Promotion automatique

  • L’objectif est de minimiser le temps d’interruption du service en cas d’avarie
  • Un peu de vocabulaire :
    • SPOF : Single Point Of Failure
    • Redondance : pour éviter les SPOF
    • Ressources : éléments gérés par un cluster
    • Split brain : deux primaires ! et perte de données
    • Fencing : isoler un serveur défaillant
    • STONITH : Shoot The Other Node In The Head (voir Fencing)
    • Watchdog : permet à un serveur de s’auto isoler
    • Quorum : participe à la résolution des partitions réseau

Patroni

  • Outil de HA
  • Basé sur un gestionnaire de configuration distribué : etcd, Consul, ZooKeeper…
  • Contexte physique, VM ou container
  • Spilo : image docker PostgreSQL+Patroni

repmgr

  • Outil spécialisé PostgreSQL
  • En pratique, fiable pour 2 nœuds
  • Gère automatiquement la bascule en cas de problème
    • health check
    • failover et switchover automatiques
  • Witness

Pacemaker

  • Solution de Haute Disponibilité généraliste
  • Disponible sur les distributions les plus répandues
  • Se base sur Corosync, un service de messagerie inter-nœuds
  • Permet de surveiller la disponibilité des machines
  • Gère le quorum, le fencing, le watchdog et le SBD
  • Gère les ressources d’un cluster et leur interdépendance
  • Extensible

PAF

  • Postgres Automatic Failover
  • Ressource Agent pour Pacemaker et Corosync permettant de :
    • détecter un incident
    • relancer l’instance primaire
    • basculer sur un autre nœud en cas d’échec de relance
    • élire le meilleur secondaire (avec le retard le plus faible)
    • basculer les rôles au sein du cluster en primaire et secondaire
  • Avec les fonctionnalités offertes par Pacemaker & Corosync :
    • surveillance de la disponibilité du service
    • quorum & Fencing
    • gestion des ressources du cluster

Conclusion

De nombreuses applications tierces peuvent nous aider à administrer efficacement un cluster en réplication.

Questions

N’hésitez pas, c’est le moment !

Travaux pratiques

(Pré-requis) Environnement

Promotion d’une instance secondaire

Suivi de timeline

pg_rewind

pgBackRest

Travaux pratiques (solutions)