Vorübergehend Network Storage für Restores und PSQL-Update nutzen

Wir betreiben eine größere Discourse-Installation auf einem VPS-Setup, das im Grunde sehr gut für uns funktioniert. In Bezug auf CPU/Speicher-Leistung haben wir noch Luft nach oben. Der Festplattenspeicher ist jedoch ein kleines Problem - nicht im täglichen Geschäft, sondern wenn es z.B. um die Aktualisierung von Postgres geht (das 13->15-Upgrade steht deswegen noch aus), fehlt uns der Platz und wir können ihn nicht einfach erweitern.

Ich weiß, dass es andere Möglichkeiten für das Postgres-Update gibt, aber betrachten Sie dies eher als eine allgemeine Frage.

Wir laufen auf Hetzner, wo Netzwerkspeicher für den temporären Gebrauch leicht verfügbar ist.

Auf unserem Testserver spiele ich jetzt damit herum, es temporär zum Laufen zu bringen - zuerst, um ein Backup von der Live-Seite wiederherzustellen, später, um das Postgres-Upgrade zu testen. Bisher war ich nicht erfolgreich.

Ich habe bereits versucht, Symlinks zu erstellen, aber festgestellt, dass dies nicht funktioniert, und auch hier irgendwo gelesen, dass dies nicht die empfohlene Methode ist. Ich habe auch versucht, das /shared-Verzeichnis von /var/discourse/shared/standalone nach /mnt/ext-storage/standalone zu verschieben und die Dateien dorthin zu übertragen - leider nicht ohne Probleme. Ich kann den Build nicht einmal abschließen.

Gibt es eine Möglichkeit, die für solche Fälle funktioniert? Ich bin mir bewusst, dass die Laufwerksleistung viel schlechter ist als die des lokalen Laufwerks, aber ich plane nicht, das Forum darauf laufen zu lassen. Ich hätte wirklich nur gerne eine komfortable Möglichkeit, es für bestimmte Szenarien zu nutzen.

Wenn Ihr Ziel darin besteht, das Upgrade so einfach wie möglich zu gestalten, erstellen Sie eine neue VM und migrieren Sie dorthin. Sie überspringen die Notwendigkeit, die Datenbank zu aktualisieren, und erhalten ein neues Betriebssystem auf Ihrer VM, was Sie wahrscheinlich sowieso tun müssen.

Folgen Sie Move a Discourse site to another VPS with rsync und kopieren Sie nicht die Datenbank (aber ja Uploads und Let’s Encrypt und Zertifikate.

Wenn Ihre Backups auf S3 gespeichert sind, ist es sehr einfach, das alte einzufrieren, ein Backup zu erstellen und das Backup auf der neuen Maschine wiederherzustellen.

Wenn Hetzner eine Art permanente IP-Adresse hat, die verschiedenen Servern zugewiesen werden kann, müssen Sie nicht einmal die DNS-Einstellungen ändern.

Sie möchten wissen, dass Sie einen neuen Server erstellen können, damit Sie dies tun können, falls Sie dies aus irgendeinem Grund jemals tun müssen. Dies ist eine perfekte Gelegenheit zum Üben.

Das ist eigentlich keine Option. Es geht sowieso nicht um den Platz für den täglichen Bedarf. Außerdem haben wir derzeit eine 600-GB-Festplatte und nutzen etwa 50 %. Es gibt keine größere Option – zumindest nicht bei Hetzner.

Deshalb habe ich ausdrücklich nach der externen Festplatte gefragt.

Haben Sie interessehalber einen ./launcher cleanup app ausgeführt? Hat das nicht genügend Speicherplatz freigegeben, um das Upgrade vor Ort durchzuführen?

1 „Gefällt mir“

sollte das für einen Neubau eine Rolle spielen? Für einen einfachen Neustart würde ich es verstehen, aber für einen Neubau?

Ich habe nicht vorgeschlagen, auf eine größere Festplatte umzusteigen, sondern nur einen neuen Server genau wie diesen zu beschaffen. Installieren Sie Discourse, stellen Sie Ihre Datenbank wieder her.

Das ist eine sehr gute Frage.

Ja. Jeder Rebuild erstellt einen neuen Container und jeder davon nimmt Platz in Anspruch. Wenn Sie das noch nie getan haben, könnten Sie Dutzende von GB freigeben.

1 „Gefällt mir“

Für das Datenbank-Upgrade benötigen Sie so viel Speicherplatz wie möglich. Also ja. Ich würde sagen, wichtig.

Unser Update-Leitfaden enthält eine Anleitung für Ihren genauen Anwendungsfall.

Wir haben diese Option für Leute hinzugefügt, die sich in der gleichen Situation wie Sie befinden. Stellen Sie einfach sicher, dass Sie ein Backup extern speichern, bevor Sie dies versuchen!

2 „Gefällt mir“

Wenn Sie sich auf einer VM befinden, ist es viel, viel einfacher, einfach zu einer neuen zu wechseln, und es gibt viele Vorteile. Hier sind einige davon:

  • Null Risiko – wenn etwas schiefgeht, haben Sie immer noch Ihren alten Server
  • Null Ausfallzeit (nur schreibgeschützt auf dem alten Server)
  • Sie erhalten das Betriebssystem-Upgrade, das Sie wahrscheinlich sowieso benötigen
  • Sie können überprüfen, ob Sie wissen, wie Sie einen neuen Server hochfahren, falls eine Katastrophe eintritt
  • Sie müssen nicht neu indizieren und vakuumieren
1 „Gefällt mir“

Vielen Dank für euren Rat, Leute.

Danke, das ist die andere Option, von der ich weiß, dass sie existiert. Danke trotzdem, dass du darauf hingewiesen hast.

Ich bezweifle das nicht – ich hätte trotzdem gerne die Option erkundet, zusätzlichen Speicherplatz für Wartungsaufgaben hinzuzufügen, falls erforderlich.

2 „Gefällt mir“

Es kann praktisch sein, Ihre Uploads oder z. B. /var/discourse/shared/web_only auf Netzwerkspeicher zu legen. Sie müssen die YML-Datei bearbeiten, um darauf zu verweisen, anstatt einen Symlink zu verwenden (der Symlink funktioniert nicht, da der Container nicht auf den Ort zugreifen kann, auf den Ihr Symlink verweist).

Wenn Sie dann zu einer neuen VM wechseln, können Sie diesen Netzwerkspeicher einfach neu einhängen, anstatt ihn zu kopieren.

Ich empfehle keinen Netzwerkspeicher für die Datenbank, da er langsamer ist.

1 „Gefällt mir“

Ich denke, es lohnt sich, aufzuschlüsseln, wie sich Ihre Nutzung zusammensetzt. Ihre tatsächliche Datenbankgröße ist möglicherweise nicht so groß, wenn der Großteil Ihrer Nutzung aus Uploads besteht und nur der Datenbankteil möglicherweise das 3-fache des Speicherplatzes während eines Upgrades benötigt.

Eine Sache, die Sie überprüfen können, ist die relative Größe eines Backups mit Downloads im Vergleich zu einem Backup ohne Downloads.

Oder verwenden Sie die Befehlszeile. Hier sind einige Ausgaben meines eher kleinen Forums:

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

Genauer betrachtet:

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 „Gefällt mir“

Ich hätte anfangs präziser sein sollen, aber ich hatte nicht erwartet, so viel Feedback zu erhalten.

Unsere Uploads und Backups befinden sich auf S3. Die Datenbankgröße auf dem Live-System beträgt jetzt etwa 230 GB. Komprimierte Backups sind, glaube ich, etwa 25 GB groß.

4 „Gefällt mir“

Wow, das ist eine der großen! Bei dieser Größe ist der Datenbankbetrieb in der Tat normalerweise etwas mühsamer.

2 „Gefällt mir“

Hallo. Hast du in letzter Zeit mal Staub gesaugt?

Nein, ich war der Meinung, dass Autovacuum sich darum kümmern sollte? Oder nicht?

Ich glaube, das sollte es. Ich bin mir nicht sicher, was es auslöst. Ich denke, ein zusätzliches zu machen, schadet nicht und könnte Ihnen etwas Speicherplatz sparen. Es wird empfohlen, es nach dem Upgrade durchzuführen, wenn Sie es vor Ort durchführen. Ich habe gesehen, dass es einige Male erheblichen Speicherplatz bereinigt hat.

Wenn Ihre Datenbank 230 GB groß ist, würde ich sie definitiv auf einem neuen Server wiederherstellen. Die Ausfallzeit beim Lesen und Schreiben von 230 GB wird erheblich sein.

1 „Gefällt mir“