Comment sauvegarder Discourse sur S3 | Discourse comment sauvegarder sur S3

Discourse et S3 sont de très bons amis. Si vous êtes familier avec S3, cela vous sera d’une grande aide.

De nombreux utilisateurs disposent d’un espace d’hébergement virtuel limité et de ressources limitées.

L’utilisation de S3 pour les sauvegardes permet une meilleure utilisation de l’espace.

Vous pouvez suivre les étapes suivantes pour la configuration :

Définir la fréquence des sauvegardes

Accédez à admin > backup, puis définissez backup_frequency sur 1. Ce paramètre indique la fréquence des sauvegardes, la valeur par défaut étant 7.
1 signifie une sauvegarde par jour.
7 signifie une sauvegarde tous les 7 jours.

Pour un site web à accès général, il est préférable de sauvegarder une fois par jour si vous utilisez S3 pour le stockage des sauvegardes.

Définir le Bucket et le chemin de sauvegarde.

Ce Bucket peut être privé et non public. Il est important de noter que si vous utilisez également S3 pour le stockage des images et des pièces jointes, ce Bucket doit être défini comme public lors de la configuration.

Pour plus de commodité, vous pouvez créer un autre bucket ici. Essayez de ne pas le confondre avec le stockage des pièces jointes et des images.

Nous vous recommandons de définir un répertoire supplémentaire ici, car Discourse créera plusieurs dossiers nécessaires dans ce répertoire.

Afin de rendre votre stockage plus clair et plus précis.

Définir s3_access_key_id et s3_secret_access_key

Ensuite, vous devrez définir s3_access_key_id et s3_secret_access_key, ainsi que s3_region pour vos données de sauvegarde. Ces 3 paramètres sont très importants, et la région ne doit pas être mal choisie. Si vos sauvegardes ne se téléchargent pas, le problème vient très probablement des autorisations.

Pour les instructions de configuration spécifiques, veuillez vous référer à : Setting up file and image uploads to S3 - sysadmin - Discourse Meta

Il est important de noter que vous devez accorder des autorisations suffisantes à votre clé ID, sinon vous ne pourrez pas télécharger.

Définir la sauvegarde sur le stockage S3

Définissez le mode de sauvegarde sur le stockage S3.

Vous devez modifier le stockage Local en stockage S3 dans la section de sélection des paramètres.

Tester la sauvegarde

Une fois que tout est configuré, vous pouvez tester la sauvegarde.

Cliquez sur le bouton de sauvegarde pour tester. Dans le menu de sauvegarde, cliquez simplement sur Backup.


Dans l’interface qui apparaît, il vous sera demandé si vous souhaitez inclure les images et les pièces jointes téléchargées.

En général, vous choisirez Oui. L’interface sera ensuite redirigée vers la page des journaux, où les informations de sauvegarde seront affichées via les journaux. Vous pouvez vérifier si le journal indique Finished pour confirmer que la sauvegarde est terminée.

Plus important encore, vous pouvez vous connecter à votre compte S3 pour confirmer que la dernière sauvegarde est présente.


Vous devez vérifier l’heure, la taille et le nom du fichier pour confirmation.


En configurant la sauvegarde S3, nous pouvons étendre l’espace de stockage de Discourse, obtenant ainsi un espace de sauvegarde et de stockage quasi illimité. Pour l’exploitation du site web, la sauvegarde et le téléchargement automatiques sont des fonctions très pratiques.

Vous disposez également de plusieurs sauvegardes stockées, ce qui vous permet de restaurer à différents points de sauvegarde lors de la restauration du site web.

Comme vous avez séparé les fichiers de sauvegarde de Docker, cela est très utile pour vos sauvegardes quotidiennes. Cela permet de réduire considérablement l’utilisation de l’espace de stockage.

Nous vous recommandons également de stocker les images et les pièces jointes sur S3, ce qui présente des avantages considérables pour la migration et la restauration des sauvegardes.

Veuillez vous référer à l’article original iSharkFly - 飞鲨 pour plus d’informations.

2 « J'aime »

Je voudrais savoir si la sauvegarde et les pièces jointes sont montées sur des S3 différents, est-ce que le contenu du S3 des pièces jointes sera également sauvegardé ? Si l’option “inclure les images et pièces jointes téléchargées” n’est pas sélectionnée, le contenu du S3 utilisé pour les pièces jointes pourra-t-il toujours s’afficher normalement sur le forum lors de la restauration de la sauvegarde ?

Je n’ai pas vraiment examiné le contenu de sauvegarde de Discourse.

Après avoir examiné nos sauvegardes, j’ai compris :

Si vos pièces jointes sont stockées sur AWS, même si vous sélectionnez Inclure les pièces jointes dans la sauvegarde lors de la sauvegarde,


les pièces jointes téléchargées sur AWS ne seront pas incluses dans votre fichier de sauvegarde.

Les pièces jointes incluses sont celles stockées sur votre ordinateur local, mais pas celles sur AWS.

La taille de notre sauvegarde de site web le montre, si les pièces jointes étaient incluses, la taille de la sauvegarde ne serait pas que de 80 Mo.


Cela indique que la sauvegarde ne contient que la base de données et les pièces jointes locales.

En ouvrant ce fichier de téléchargement, vous verrez seulement 2 dossiers : l’un est dump, qui est le fichier de vidage de la base de données PGSQL.


L’autre est le dossier uploads, qui ne contient que les pièces jointes que vous avez téléchargées localement, pas celles stockées sur AWS. Pour nous, ce dossier est très petit, avec peu de fichiers.

C’est parce que nous avons tout téléchargé sur AWS peu de temps après le lancement de la communauté.


L’image ci-dessus montre le contenu du fichier de vidage PGSQL. Vous pouvez voir la version PGSQL du conteneur de base de données Discourse en cours d’exécution dans le fichier de vidage.

Si vous souhaitez consulter la base de données localement, ce fichier de vidage peut être directement importé dans votre conteneur local.

Problème de restauration AWS

Si vous utilisez des pièces jointes AWS mais pas de CDN AWS, alors le contenu du corps du message sera le chemin d’accès absolu sur votre AWS.

Dans le fichier MD du sujet, il s’affiche comme suit :


Cependant, une fois le contenu publié, le code HTML réel est remplacé par Discourse par votre adresse CDN absolue.


Par conséquent, sur la base de la réponse ci-dessus, si vous ne sélectionnez pas la sauvegarde des pièces jointes lors de la sauvegarde, le contenu des pièces jointes ne sera pas affecté lors de la restauration.

Exception

En fait, les pièces jointes ont été affectées, principalement en raison du changement de domaine.

Parce que nous avons eu un changement de domaine au début, mais le contenu des pièces jointes était toujours là, mais le corps du message ne pouvait pas être lié, même en reconstruisant le HTML, il ne pouvait pas être lié.

À ce moment-là, c’est un peu gênant, il faut peut-être le modifier directement dans la base de données.

Tant que vous ne changez pas de domaine de manière aléatoire, ce n’est généralement pas un problème.

Pour une discussion plus détaillée, veuillez visiter : Discourse 备份和恢复中有关附件的问题 - Discourse - iSharkFly

Je voudrais aussi vous poser une autre question. Je n’utilise pas Amazon Cloud S3 mais Cloudflare R2, et j’ai réussi à sauvegarder dans R2. Je peux voir les fichiers dans Cloudflare, mais les fichiers de sauvegarde ne s’affichent pas dans le backend de Discourse. Où pourrait se situer le problème ?


Sauvegardez à nouveau manuellement et vérifiez le journal de sauvegarde.

Il s’agit très probablement d’une erreur dans la partie API de vérification de l’état après que Discourse a stocké la sauvegarde dans R2.

Vérifiez si le contenu du journal est complet.

Voici la capture d’écran qui vient d’être générée, tout semble normal. De plus, j’ai créé l’API avec les autorisations les plus élevées dans R2.

J’ai exécuté mon processus de sauvegarde, et il semble que nos journaux soient identiques.

[2024-07-26 11:56:00] pg_dump: executing SEQUENCE SET category_custom_fields_id_seq
[2024-07-26 11:56:00] Finalizing backup...
[2024-07-26 11:56:00] Creating archive: isharkfly-2024-07-26-115540-v20240723030506.tar.gz
[2024-07-26 11:56:00] Making sure archive does not already exist...
[2024-07-26 11:56:00] Creating empty archive...
[2024-07-26 11:56:00] Archiving data dump...
[2024-07-26 11:56:00] Archiving uploads...
[2024-07-26 11:56:00] Skipping uploads stored on S3.
[2024-07-26 11:56:00] Removing tmp '/var/www/discourse/tmp/backups/default/2024-07-26-115540' directory...
[2024-07-26 11:56:00] Gzipping archive, this may take a while...
[2024-07-26 11:56:05] Uploading archive...
[2024-07-26 11:56:09] Executing the after_create_hook for the backup...
[2024-07-26 11:56:09] Deleting old backups...
[2024-07-26 11:56:10] Cleaning stuff up...
[2024-07-26 11:56:10] Removing archive from local storage...
[2024-07-26 11:56:10] Removing '.tar' leftovers...
[2024-07-26 11:56:10] Marking backup as finished...
[2024-07-26 11:56:10] Refreshing disk stats...
[2024-07-26 11:56:10] Notifying 'honeymoose' of the end of the backup...
[2024-07-26 11:56:18] Finished!

La prochaine étape sera de vérifier s’il y a un problème avec l’enregistrement des tables de sauvegarde de la base de données.

Utilisez-vous également R2 ? Est-ce que cela s’affiche correctement ?

J’utilise AWS.

Cela devrait être facile à configurer.