Utilisez (temporairement) le stockage réseau pour les restaurations, la mise à jour de PSQL,

Nous exploitons une installation Discourse plus importante sur une configuration VPS qui fonctionne très bien pour nous. En termes de performances CPU/Mémoire, nous avons de la marge. L’espace disque est cependant un peu un problème - pas dans les opérations quotidiennes, mais lorsqu’il s’agit de mettre à niveau Postgres par exemple (la mise à niveau 13->15 est en suspens à cause de cela), nous manquons d’espace et ne pouvons pas facilement l’étendre.

Je sais qu’il existe d’autres options pour la mise à jour de postgres, mais considérez cela plutôt comme une question générale.

Nous fonctionnons sur Hetzner où le stockage réseau est facilement disponible pour une utilisation temporaire.

Sur notre serveur de test, je suis en train de jouer avec pour que cela fonctionne de manière temporaire - d’abord pour restaurer une sauvegarde du site en production, puis pour tester la mise à niveau de Postgres. Jusqu’à présent, je n’ai pas réussi.

J’ai déjà essayé de créer des liens symboliques (symlinking), mais j’ai remarqué que cela ne fonctionnait pas et j’ai également lu ici quelque part que ce n’est pas la méthode recommandée. J’ai également essayé de déplacer le partage /shared de /var/discourse/shared/standalone vers /mnt/ext-storage/standalone et j’y ai déplacé les fichiers - malheureusement, pas sans problèmes. Je ne peux même pas terminer la construction (build).

Existe-t-il un moyen qui fonctionne pour ce genre de cas ? Je suis conscient que les performances du lecteur sont bien pires que celles du lecteur local, mais je ne prévois pas de faire fonctionner le forum dessus. J’aimerais vraiment avoir un moyen confortable de l’utiliser pour certains scénarios.

Si votre objectif est de faire la mise à niveau, le plus simple est de créer une nouvelle VM et d’y migrer. Vous évitez ainsi la nécessité de mettre à niveau la base de données et vous obtenez un nouvel OS sur votre VM, ce que vous devrez probablement faire de toute façon.

Suivez Déplacer un site Discourse vers un autre VPS avec rsync et ne copiez pas la base de données (mais copiez les uploads, let’s encrypt et les certificats.

Si vos sauvegardes sont sur s3, il est très simple de geler l’ancienne, de faire une sauvegarde et de restaurer la sauvegarde sur la nouvelle machine.

Si hetzner dispose d’une sorte d’IP permanente qui peut être attribuée à différents serveurs, vous n’avez même pas besoin de changer le DNS.

Vous voulez savoir que vous pouvez construire un nouveau serveur afin de pouvoir le faire si jamais vous devez le faire pour une raison quelconque. C’est une excellente occasion de vous entraîner.

En fait, ce n’est pas une option. De toute façon, il n’y a pas de manque d’espace pour les besoins quotidiens. De plus, nous sommes actuellement sur un disque de 600 Go et en utilisons environ 50 %. Il n’y a pas d’option plus grande, du moins pas chez Hetzner.

C’est pourquoi je demandais explicitement le disque externe.

Avez-vous effectué un ./launcher cleanup app par curiosité ? Cela n’a-t-il pas libéré suffisamment d’espace pour effectuer la mise à niveau sur place ?

1 « J'aime »

Est-ce que cela devrait importer pour une reconstruction ? Pour un simple redémarrage, je comprendrai, mais pour une reconstruction ?

Je ne suggérais pas de passer à un disque plus grand, juste d’obtenir un nouveau serveur exactement comme celui-ci. Installez Discourse, restaurez votre base de données.

C’est une très bonne question.

Oui. Chaque reconstruction crée un nouveau conteneur et chacun d’eux prend de la place. Si vous ne l’avez jamais fait, vous pourriez libérer des dizaines de Go.

1 « J'aime »

Pour la mise à niveau de la base de données, vous avez besoin de tout l’espace dont vous pouvez disposer. Alors oui. Je dirais que c’est important.

Notre guide de mise à jour comprend un guide pour votre cas d’utilisation exact

Nous avons ajouté cette option pour les personnes qui se trouvent dans la même situation que vous. Assurez-vous simplement de stocker une sauvegarde hors site avant d’essayer cela !

2 « J'aime »

Si vous êtes sur une machine virtuelle, il est beaucoup, beaucoup plus facile de simplement en déplacer vers une nouvelle, et il y a de nombreux avantages. En voici quelques-uns :

  • risque nul — si quelque chose tourne mal, vous avez toujours votre ancien serveur
  • temps d’arrêt nul (juste en lecture seule sur l’ancien serveur)
  • vous obtenez la mise à niveau du système d’exploitation dont vous avez probablement besoin de toute façon
  • vous pouvez vérifier que vous savez comment démarrer un nouveau serveur en cas de catastrophe
  • vous n’avez pas besoin de réindexer et de faire un vacuum
1 « J'aime »

J’apprécie vos conseils les gars.

Merci, c’est l’autre option dont j’ai dit que j’étais conscient. Merci quand même de l’avoir soulignée.

Je n’en doute pas - j’aurais toujours aimé explorer la possibilité d’ajouter du stockage supplémentaire pour les tâches de maintenance si nécessaire.

2 « J'aime »

Il peut être utile de conserver vos téléchargements, ou, disons, /var/discourse/shared/web_only sur un stockage réseau. Vous devez modifier le fichier yml pour qu’il pointe vers celui-ci plutôt que d’utiliser un lien symbolique (le lien symbolique ne fonctionne pas car le conteneur ne peut pas accéder à l’emplacement vers lequel votre lien symbolique pointe).

Ensuite, si vous migrez vers une nouvelle VM, vous pouvez simplement remonter ce stockage réseau au lieu de le copier.

Je ne recommande pas le stockage réseau pour la base de données car il est plus lent.

1 « J'aime »

Je pense qu’il est utile de détailler votre utilisation. La taille réelle de votre base de données n’est peut-être pas si importante, si la plupart de votre utilisation concerne les téléchargements, et que seule la partie base de données nécessite environ 3 fois plus d’espace lors de la mise à niveau.

Une chose que vous pouvez vérifier est la taille relative d’une sauvegarde avec téléchargements par rapport à une sauvegarde sans téléchargements.

Ou, utilisez la ligne de commande. Voici quelques sorties de mon forum plutôt petit :

root@rc-debian-hel:~# free -m
               total        used        free      shared  buff/cache   available
Mem:            3813        1631         267         492        1915        1504
Swap:           4095         730        3365
root@rc-debian-hel:~# swapon
NAME                       TYPE  SIZE   USED PRIO
/var/local/swap/swapfile.1 file 1024M 730.2M   -2
/var/local/swap/swapfile.3 file 1024M   136K   -3
/var/local/swap/swapfile.0 file 1024M     0B   -4
/var/local/swap/swapfile.2 file 1024M     0B   -5
root@rc-debian-hel:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           382M  1.2M  381M   1% /run
/dev/sda1        38G   22G   14G  62% /
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/sda15      253M  6.3M  246M   3% /boot/efi
overlay          38G   22G   14G  62% /var/lib/docker/overlay2/68abab42f48040e0dfc03d3c9fc893dfa3e7fb01ba1b2215731668339bbc3766/merged
tmpfs           382M     0  382M   0% /run/user/0

En regardant de plus près :

root@rc-debian-hel:~# du -kx / | sort -n | tail -33
767000	/var/lib/docker/overlay2/8b6ac2d69a1fa195285e61aba2876484a69fd2a19032c2f4def1c4adb02d6554/diff/home/discourse/.local/share/pnpm
767004	/var/lib/docker/overlay2/8b6ac2d69a1fa195285e61aba2876484a69fd2a19032c2f4def1c4adb02d6554/diff/home/discourse/.local/share
767020	/var/lib/docker/overlay2/8b6ac2d69a1fa195285e61aba2876484a69fd2a19032c2f4def1c4adb02d6554/diff/home/discourse/.local
795804	/var/lib/docker/overlay2/8b6ac2d69a1fa195285e61aba2876484a69fd2a19032c2f4def1c4adb02d6554/diff/home/discourse
795808	/var/lib/docker/overlay2/8b6ac2d69a1fa195285e61aba2876484a69fd2a19032c2f4def1c4adb02d6554/diff/home
833836	/var/discourse/shared/standalone/postgres_data
884648	/var/discourse/shared/standalone/uploads/default/original
978000	/usr/lib/modules
991644	/var/lib/docker/overlay2/68abab42f48040e0dfc03d3c9fc893dfa3e7fb01ba1b2215731668339bbc3766/diff
991664	/var/lib/docker/overlay2/68abab42f48040e0dfc03d3c9fc893dfa3e7fb01ba1b2215731668339bbc3766
1025164	/var/discourse/shared/standalone/uploads/default/optimized
1146528	/usr/lib/firmware
1350496	/var/lib/docker/overlay2/8b6ac2d69a1fa195285e61aba2876484a69fd2a19032c2f4def1c4adb02d6554/diff
1350512	/var/lib/docker/overlay2/8b6ac2d69a1fa195285e61aba2876484a69fd2a19032c2f4def1c4adb02d6554
1909816	/var/discourse/shared/standalone/uploads/default
1919380	/var/discourse/shared/standalone/uploads
2471968	/usr/lib
2506940	/var/log/journal/82e4cf9bff9748d090b41e6d336353eb
2515140	/var/log/journal
2592200	/var/log
3029428	/usr
3839148	/var/discourse/shared/standalone/backups/default
3839152	/var/discourse/shared/standalone/backups
4194324	/var/local/swap
4194328	/var/local
5171844	/var/lib/docker/overlay2
5217052	/var/lib/docker
5455612	/var/lib
6682972	/var/discourse/shared/standalone
6682976	/var/discourse/shared
6685716	/var/discourse
19041368	/var
23037264	/
root@rc-debian-hel:~# du -kx /var/discourse/shared/ | sort -n | tail -33
42312	/var/discourse/shared/standalone/uploads/default/original/2X/f
42448	/var/discourse/shared/standalone/uploads/default/original/2X/1
42548	/var/discourse/shared/standalone/uploads/default/original/2X/6
43380	/var/discourse/shared/standalone/uploads/default/optimized/2X/2
44148	/var/discourse/shared/standalone/uploads/default/optimized/2X/5
44340	/var/discourse/shared/standalone/uploads/default/optimized/2X/1
45240	/var/discourse/shared/standalone/uploads/default/optimized/2X/e
46648	/var/discourse/shared/standalone/uploads/default/optimized/2X/c
49516	/var/discourse/shared/standalone/uploads/default/optimized/2X/8
49772	/var/discourse/shared/standalone/uploads/default/optimized/2X/9
49932	/var/discourse/shared/standalone/log/var-log/nginx
50788	/var/discourse/shared/standalone/uploads/default/optimized/2X/0
55428	/var/discourse/shared/standalone/uploads/default/optimized/2X/d
55844	/var/discourse/shared/standalone/uploads/default/optimized/2X/f
57548	/var/discourse/shared/standalone/uploads/default/optimized/2X/6
77280	/var/discourse/shared/standalone/log/var-log
81928	/var/discourse/shared/standalone/postgres_data/pg_wal
84064	/var/discourse/shared/standalone/log
294384	/var/discourse/shared/standalone/uploads/default/optimized/1X
325068	/var/discourse/shared/standalone/uploads/default/original/1X
559576	/var/discourse/shared/standalone/uploads/default/original/2X
724684	/var/discourse/shared/standalone/postgres_data/base/16384
730776	/var/discourse/shared/standalone/uploads/default/optimized/2X
749424	/var/discourse/shared/standalone/postgres_data/base
833836	/var/discourse/shared/standalone/postgres_data
884648	/var/discourse/shared/standalone/uploads/default/original
1025164	/var/discourse/shared/standalone/uploads/default/optimized
1909816	/var/discourse/shared/standalone/uploads/default
1919380	/var/discourse/shared/standalone/uploads
3839148	/var/discourse/shared/standalone/backups/default
3839152	/var/discourse/shared/standalone/backups
6682972	/var/discourse/shared/standalone
6682976	/var/discourse/shared/
2 « J'aime »

J’aurais dû être plus précis au départ, mais je ne m’attendais pas à recevoir autant de commentaires.

Nos téléchargements et sauvegardes sont sur S3. La taille de la base de données sur le système en direct est maintenant d’environ 230 Go. Les sauvegardes compressées pèsent environ 25 Go, je pense.

4 « J'aime »

Wow, c’est l’une des grosses ! À cette taille, l’opération de base de données est effectivement un peu plus gênante.

2 « J'aime »

Salut. As-tu passé l’aspirateur récemment ?

Non, j’étais sous l’impression que l’autovacuum devrait s’en occuper ? Non ?

Je pense que c’est censé le faire. Je ne sais pas ce qui le déclenche. Je pense que faire un nettoyage supplémentaire ne fait pas de mal et pourrait vous faire économiser de l’espace. Il est recommandé de le faire après la mise à niveau si vous la faites sur place. Je l’ai vu nettoyer considérablement de l’espace à quelques reprises.

Si votre base de données fait 230 Go, je la restaurerais certainement sur un nouveau serveur. Le temps d’arrêt pour lire et écrire 230 Go sera important.

1 « J'aime »