Les sauvegardes et la réplication sont deux choses différentes.
Les sauvegardes fournissent une instantané des données à un moment donné. Elles offrent un point de restauration.
La réplication consiste à distribuer chaque action vers un système différent afin que vous l’ayez à plus d’un emplacement. Les suppressions sont également répliquées.
Si vous voulez vraiment être tolérant aux pannes, vous avez besoin des deux. (Et plus encore…)
Ainsi, la réplication ne résout que le problème d’avoir des données actuelles à plusieurs endroits. Les sauvegardes fournissent la méthode pour restaurer un système à un point dans le temps donné.
Discourse utilise 2 mécanismes de stockage :
- Base de données PostgreSQL pour tout sauf les fichiers joints
- Les fichiers joints sont stockés sur le système local ou dans S3
Pour sauvegarder et/ou répliquer les données stockées dans la base de données PostgreSQL, vous pouvez consulter la documentation PostgreSQL pour savoir comment procéder. Concernant les sauvegardes, et la réplication.
Les fichiers joints sont un peu plus délicats. Si vous les stockez sur S3, vous pouvez utiliser les sauvegardes S3. Pour les fichiers stockés localement, vous pouvez utiliser diverses options du système local.
La création de sauvegardes complètes est une tâche lourde en fonction de la quantité de données. Il n’est donc pas facile de le faire plus souvent. La procédure de sauvegarde standard de Discourse consiste à créer des sauvegardes complètes. Si vous voulez vraiment réduire le risque de perdre des données, vous devez rechercher d’autres options.
Une option pourrait être fournie par votre service d’hébergement : les instantanés de volume (volume snapshots). Cela permet de faire une copie « instantanée » des données stockées dans un volume. Cela vous permet de restaurer le volume à ce moment-là. Les instantanés de volume peuvent également être disponibles au niveau du système d’exploitation en fonction du système de fichiers utilisé. (btrfs le prend en charge par exemple.)
En outre, la documentation PostgreSQL aborde également la création de sauvegardes plus continues de la base de données, permettant une excellente récupération ponctuelle de la base de données. (N’oubliez pas d’expédier les sauvegardes hors site.) C’est beaucoup plus rapide que les sauvegardes complètes.
Pour des sauvegardes de pièces jointes plus granulaires, vous pouvez utiliser divers outils de sauvegarde qui permettent de gérer les sauvegardes complètes + différentielles. Par exemple duplicity. Ou vous pourriez utiliser rsync (sans suppression). Entre les instantanés, vous pourriez toujours perdre des fichiers. L’utilisation de S3 sans suppression serait plus sûre car les fichiers sont déjà sur un autre système.
Pour conclure. Le mécanisme de sauvegarde standard de Discourse n’est pas bien adapté à une planification de sauvegarde plus fréquente. Si vous souhaitez disposer de plus de sauvegardes, utilisez une combinaison des fonctionnalités standard de sauvegarde/réplication PostgreSQL, S3, instantanés de volume, etc.
Sur mon site, je n’utilise pas le système de sauvegarde de Discourse pour les sauvegardes régulières. J’ai toujours des sauvegardes quotidiennes, mais j’utilise une combinaison de configurations pg_dumps et duplicity (coordonnées via backupninja).