-
Notifications
You must be signed in to change notification settings - Fork 1
Backup | Présentation du système
Anis Safine edited this page Apr 9, 2021
·
1 revision
Résorption-bidonvilles utilise une base de données principale PostgreSQL. Cette base de données est indispensable au bon fonctionnement de la plateforme, aussi sa bonne sauvegarde est primordiale.
- un script
local_backup.sh
est exécuté toutes les heures par cronjob pour réaliser une backup locale (ie. sur le même serveur) de la base de données. Cette backup doit permettre de faire face à d'éventuelles erreurs de manipulations sur la base de données. Ces sauvegardes sont conservées 30 jours. - une option de backup est souscrite auprès de l'hébergeur du serveur de production (OVH), garantissant une copie des données sur un autre serveur. Cette première copie doit permettre de faire face à une éventuelle défaillance du serveur.
- un script
cloud_backup.sh
est exécuté une fois par jour par cronjob pour copier la backup locale la plus récente chez un autre hébergeur (Scaleway). Cette copie doit permettre de faire face à une éventuelle défaillance de l'hébergeur du serveur de production. Ces sauvegardes sont sont conservées 6 mois.
- le premier critère de décision était la localisation de serveurs en France
- OVH est l'hébergeur historique du projet, choisi initialement pour le faible coût des VPS et les services proposés (backup automatisée etc.)
- Scaleway met à disposition des services compatibles S3 en cloud et un espace de stockage gratuit jusqu’à 75 Go et un coût mensuel nul pour les 75 premiers Go transférés. Cela répondait parfaitement au besoin pour une copie de backup de quelques Mo.
-
À propos de la base de données
- La base de données est montée via une image docker
- le script
local_backup.sh
est copié directement dans cette image pour y être exécuté facilement
-
local_backup.sh
, backups locales :- un cronjob sur l'hôte exécute toutes les heures le script
local_backup
. Ce script :- génère en sortie un fichier nommé avec la date et l'heure de la sauvegarde
- supprime tous les fichiers de backup qui ont plus de 30 jours d'ancienneté
- le dossier du conteneur dans lequel sont stockés les fichiers de sauvegarde est monté dans un volume Docker
- un cronjob sur l'hôte exécute toutes les heures le script
-
cloud_backup.sh
, backups cloud :- un cronjob sur l'hôte exécute une fois par jour le script
cloud_backup.sh
. Ce script :- copie le fichier de sauvegarde du jour sur un bucket Scaleway
- publie une notification sur un channel dédié du Slack de l'équipe pour indiquer si la copie a fonctionné ou échoué
- la copie est exécutée grâce à la commande
rclone
qui chiffre puis copie les fichiers de backup sur un bucket Scaleway -
rclone
est exécutée via une image Dockerrclone/rclone
- le conteneur rclone accède aux fichiers de sauvegarde en montant le volume Docker cité plus haut
- une rotation des fichiers de sauvegarde est assurée grâce à une policy qui fixe une période de rétention maximum des fichiers sur le bucket (190 jours) ; cela garantit que le bucket ne sature pas à mesure que les fichiers de sauvegarde s’accumulent.
- un cronjob sur l'hôte exécute une fois par jour le script