Échec de restauration - Vérifier l'espace disque libre

Je tente de restaurer une instance Discourse fraîchement installée et je rencontre cette erreur en ligne de commande :

ERROR:  could not extend file "base/16384/17011337": wrote only 4096 of 8192 bytes at block 15860
HINT:  Check free disk space.
EXCEPTION: psql failed: HINT:  Check free disk space.

Le fichier de sauvegarde que je tente de restaurer fait 22 Go (gz compressé) et j’ai 198 Go d’espace libre sur le serveur, donc je ne pense vraiment pas que ce soit un problème d’espace disque. Avez-vous une idée de la raison pour laquelle il se plaint ici ?

Avez-vous une idée de la taille une fois décompressée ? De plus, cela ne prend pas en compte les index, donc vous pourriez essayer sur un serveur avec plus d’espace disque ?

Vous pouvez également vérifier vos partitions de disque. Il est possible que vous ayez 198 Go d’espace libre sur le serveur ; mais le serveur possède plus d’une partition de disque, comme vous le savez sûrement. Peut-être pourriez-vous répondre avec la sortie de la commande df ?

Je pense que la base de données faisait environ 40 Go non compressée. J’ai effectué une sauvegarde du forum après l’importation depuis un autre logiciel de forum, j’ai donc supposé qu’une restauration ne poserait aucun problème. Je n’étais certainement pas à court d’espace disque auparavant. Je peux ajouter un peu plus d’espace disque, mais je pensais simplement qu’il n’y avait aucune raison que cela nécessite plus de 3 fois la taille de la base de données.

Tout est partitionné sur /, donc je ne pense pas qu’il y ait de problèmes de ce côté :

Salut @Ghan,

As-tu lancé ta restauration depuis la ligne de commande ou depuis l’interface utilisateur du “docker manager” ?

Je l’ai essayé des deux manières, mais le plus récemment en CLI. Je vais essayer d’augmenter l’espace disque, puis surveiller l’utilisation pendant l’importation.

J’ai ajouté 50 Go et l’opération s’est terminée avec succès. C’est beaucoup d’espace disque pour une base de données.

Le processus de restauration ajoute-t-il des index supplémentaires par rapport à une importation ?

Il stocke le contenu de votre forum. Nous avons des instances Discourse de 1 Go et des instances Discourse de 500 Go, cela dépend du niveau d’activité :stuck_out_tongue:

Il existe une requête pour connaître la taille de chaque table dans le sujet Mise à jour PostgreSQL 13. Essayez peut-être de l’exécuter et de publier les résultats ici ?

Je sais que nous avons beaucoup de contenu. Mais il semble que l’espace requis ait gonflé simplement en effectuant une sauvegarde et une restauration. Nous avions plus de 100 Go d’espace libre avant la sauvegarde, j’ai donc supposé que la restauration ne poserait aucun problème, mais l’opération de restauration a nécessité beaucoup plus d’espace que prévu. Il semble que nous ayons manqué de peu.

J’essaie d’exécuter la requête pour afficher les 20 plus grands objets de la base de données, mais elle tourne depuis environ une heure maintenant et je ne sais pas combien de temps il lui faudra encore pour se terminer.

Vérifiez si les sauvegardes et restaurations de schémas sont toujours présentes. Lorsqu’une restauration ou une sauvegarde échoue de manière catastrophique (comme un manque d’espace), elles peuvent rester en place. Nous disposons d’un travail en arrière-plan qui les nettoie chaque semaine, mais vous pouvez souhaiter l’exécuter plus tôt.

Accédez à /sidekiq/scheduler, recherchez Jobs::DropBackupSchema et cliquez sur “Déclencher”.

Si vous disposez d’une sauvegarde complète, vous aurez alors 3 copies : la sauvegarde complète, le dump de base de données qu’elle contient, la base de données restaurée, ainsi que la base de données initiale.