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.
PostgreSQL : Outils de sauvegarde physique
Introduction
2 mécanismes de sauvegarde natifs et robustes
Industrialisation fastidieuse
Des outils existent !!
Au menu
Présentation:
pg_basebackup
pgBackRest
Barman
Comment choisir ?
Préalable : définir les
besoins
Sauvegarde locale (ex. NFS) ?
Copie vers un serveur tiers (push) ?
Sauvegarde distante initiée depuis un serveur tiers (pull) ?
Ressources à disposition ?
Accès SSH ?
OS ?
Sauvegardes physiques ? Logiques ?
Version de PostgreSQL ?
Politique de rétention ?
pg_basebackup
pg_basebackup - Présentation
Outil intégré à PostgreSQL
Prévu pour créer une instance secondaire
Pour sauvegarde ponctuelle
PITR avec outils complémentaires
pg_basebackup - Formats
de sauvegarde
--format plain
arborescence identique à l’instance sauvegardée
--format tar
archive
compression : -z, -Z (0..9)
pg_basebackup - Avantages
Transfert des WAL pendant la sauvegarde
Slot de réplication automatique (temporaire voire permanent)
Limitation du débit
Relocalisation des tablespaces
Fichier manifeste (v13+)
Vérification des checksums
Sauvegarde possible à partir d’un secondaire
Compression côté serveur ou client (v15+)
Emplacement de la sauvegarde (client/server/blackhole) (v15+)
Suivi : pg_stat_progress_basebackup (v13+)
pg_basebackup - Limitations
Configuration streaming nécessaire
Pas de configuration de l’archivage
Pas d’association WAL archivés / sauvegarde
Pas de politique de rétention
sauvegarde ponctuelle
Pas de gestion de la restauration !
manuel : recovery.signal,
restore_command…
pour un secondaire : --write-recovery-conf
pgBackRest
pgBackRest - Présentation
générale
David Steele (Crunchy Data)
Langage : C
License : MIT (libre)
Type d’interface : CLI (ligne de commande)
pgBackRest - Fonctionnalités
Gère la sauvegarde et la restauration
pull ou push, multidépôts
mono- ou multiserveur
Indépendant des commandes système
protocole dédié
Sauvegardes complètes, différentielles ou incrémentales
Multithread, sauvegarde depuis un secondaire, archivage
asynchrone…
Projet mature
pgBackRest - Sauvegardes
Type de sauvegarde : physique/PITR (à chaud)
Type de stockage : local, push ou
pull
Planification : crontab (ou autre)
Complètes, différentielles et incrémentales
Compression des WAL
pgBackRest - Restauration
Depuis le serveur de BDD avec un dépôt local ou à distance
Point dans le temps : date, identifiant de transaction, timeline ou
point de restauration
pgBackRest - Installation
Accéder au dépôt communautaire PGDG
Installer le paquet pgbackrest
pgBackRest - Utilisation
Usage:pgbackrest[options][command]Commands:annotate Add or modify backup annotation.archive-get Get a WAL segment from the archive.archive-push Push a WAL segment to the archive.backup Backup a database cluster.check Check the configuration.expire Expire backups that exceed retention.help Get help.info Retrieve information about backups.repo-get Get a file from a repository.repo-ls List files in a repository.restore Restore a database cluster.server pgBackRest server.server-ping Ping pgBackRest server.stanza-create Create the required stanza data.stanza-delete Delete a stanza.stanza-upgrade Upgrade a stanza.start Allow pgBackRest processes to run.stop Stop pgBackRest processes from running.verify Verify contents of the repository.version Get version.
pgBackRest - Configuration
/etc/pgbackrest.conf
Configuration générale dans la section [global]
Chaque instance à sauvegarder doit avoir sa propre section, appelée
stanza
possibilité d’éclater la configuration dans plusieurs fichiers :
config-include-path
pgBackRest -
Configuration PostgreSQL
Adapter l’archivage dans le fichier
postgresql.conf