Table des matières

Installation de Borg

Ressources

Mise en place du dépôt Borg

Créer un utilisateur "backups"

Autoriser les machines distantes

Afin d'autoriser les machines accédant à l'utilsateur admin sur "bkp-srv" à accéder à l'utilisateur backups, nous allons copier le contenu du fichier /home/admin/.ssh/authorized_keys :

Installer Borg sur "bkp-srv"

Sur l'instance "bkp-srv" hébergeant les dépôts Borg, nous installerons Borg avec Pip afin d’accéder aux dernières versions disponibles rapidement :

Accéder à Borg sans activer l'environnement virtuel

Pour accéder à Borg sans activer l'environnement virtuel :

Mettre jour Borg

Sur les machines à sauvegarder

Préparer la connexion SSH

Le dépôt Borg étant distant (hébergé sur l'instance "bkp-srv"), il est nécessaire de créer un clé SSH pour l'utilisateur admin (qui héberge les containers Docker). La clé publique générée sera ensuite copier ans le fichier ~/.ssh/authorized_keys de l'utilisateur backups de l'instance "bkp-srv" afin d'autoriser l'accès au dépôt depuis l'instance à sauvegarder.

Installer le container de sauvegarde

Préparer la sauvegarde des bases de données

Initialiser des dépôts

Réinitialiser un dépôt

S'il s'avérait nécessaire de réinitialiser un dépôt, la démarche à suivre est la suivante :

Tester le container de sauvegarde

Accéder au container borgmatic pour vérifier et tester son contenu : docker exec -it borgmatic /bin/bash

Tester l'envoi des emails

Tester l'envoi de message Telegram

Tester Borgmatic

Tester le cron de Borgmatic

Tester le dump Postgresql

Utiliser Telegram

Configurer Telegram pour l'utiliser avec Ntfy ou le script telegram-send et envoyer des alertes à l'aide de Borgmatic. Ntfy nécessite d'autoriser manuellement un bot après chaque build/lancement d'un container. Ce n'est pas très pratique. Il vaut mieux utiliser le script telegram-send à la place.

Configurer Telegram avec le script ''telegram-send''

🗑️ Configurer Telegram avec Ntfy

Restaurer une sauvegarde

Préparer la restauration

Récupérer des fichiers et/ou dossiers avec Borg

Récupérer des fichiers et/ou dossiers avec Borgmatic

Écraser les fichiers à restaurer par ceux provenant de la sauvegarde sur l'hôte

Restaurer une base de données avec Borgmatic

Extraire l'archive de la base et la récupérer localement

Finaliser la restauration

Cas particulier de la base GeoNature

Si nécessaire, il est aussi possible de manipuler les éléments à restaurer :

Cas particulier de la base GeoNature Atlas

En fonction du format de sauvegarde de la base et de l'utilisateur qui l'effectue, la restauration de la base de données ne pourra pas se faire avec la commande borgmatic restore. La base gnatlas contient des vues matérialisées qui posent problèmes car elles sont basées sur des tables "étrangères" (FDW). Or, les informations du Foreign Data Wrapper ne sont pas correctement restaurées (utilisateur, mot de passe) par pg_restore quand la sauvegarde est au format "directory". Avec la version 13+ de Postgresql ce comportement devrait être amélioré. Du coup, la restauration par borgmatic ne fonctionne pas et celle par pg_restore échoue si l'on ne supprime pas les requêtes de rafraîchissement des VM car les tables FDW ne contiennent pas de données et le rafraîchissement des vues échoue.

Si besoin, pour voir ce qui existe dans la base concernant FDW:

Borg commandes utiles