استخدم (مؤقتًا) التخزين الشبكي للاستعادة، وتحديث PSQL,

نحن نقوم بتشغيل تثبيت Discourse أكبر على إعداد VPS يعمل بشكل جيد جدًا بالنسبة لنا. من حيث أداء وحدة المعالجة المركزية/الذاكرة، لدينا متسع. ومع ذلك، فإن مساحة القرص تمثل مشكلة إلى حد ما - ليس في العمل اليومي ولكن عندما يتعلق الأمر بترقية Postgres على سبيل المثال (ترقية 13-> 15 معلقة بسبب ذلك) نحن نفتقر إلى المساحة ولا يمكننا التوسع بسهولة.

أعلم أن هناك خيارات أخرى لتحديث postgres ولكن اعتبر هذا بمثابة سؤال عام.

نحن نعمل على Hetzner حيث تتوفر مساحة تخزين الشبكة بسهولة للاستخدام المؤقت.

على خادم الاختبار الخاص بنا، ألعب الآن بجعله يعمل بطريقة مؤقتة - أولاً لاستعادة نسخة احتياطية من الموقع المباشر، ثم لاحقًا لاختبار ترقية Postgres. حتى الآن لم أكن ناجحا.

لقد حاولت بالفعل استخدام الروابط الرمزية ولكنني لاحظت أنها لم تنجح وقرأت أيضًا هنا في مكان ما أنها ليست الطريقة الموصى بها. لقد حاولت أيضًا نقل مشاركة /shared من /var/discourse/shared/standalone إلى /mnt/ext-storage/standalone ونقلت الملفات إلى هناك - لسوء الحظ ليس بدون مشاكل. لا يمكنني حتى إنهاء البناء.

هل هناك أي طريقة تعمل في هذه الأنواع من الحالات؟ أنا أدرك أن أداء المحرك أسوأ بكثير من المحرك المحلي ولكنني لا أخطط لتشغيل المنتدى عليه. أود حقًا أن أحصل على طريقة مريحة لاستخدامها في سيناريوهات معينة.

إذا كان هدفك هو إجراء الترقية، فإن أسهل شيء هو تشغيل جهاز افتراضي جديد والانتقال إليه. تتجاوز الحاجة إلى ترقية قاعدة البيانات وتحصل على نظام تشغيل جديد على جهازك الافتراضي، والذي من المحتمل أن تحتاج إلى القيام به على أي حال.

اتبع نقل موقع Discourse إلى خادم افتراضي خاص آخر باستخدام rsync ولا تقم بنسخ قاعدة البيانات (ولكن نعم، قم بنسخ التحميلات وشهادات Let’s Encrypt والشهادات الأخرى.

إذا كانت النسخ الاحتياطية الخاصة بك على S3، فمن السهل جدًا تجميد النسخة القديمة، وإنشاء نسخة احتياطية، واستعادة النسخة الاحتياطية على الجهاز الجديد.

إذا كان لدى Hetzner نوع من عناوين IP الدائمة التي يمكن تعيينها لخوادم مختلفة، فلن تحتاج حتى إلى تغيير نظام أسماء النطاقات (DNS).

تريد أن تعرف أنه يمكنك بناء خادم جديد بحيث إذا اضطررت لسبب ما في أي وقت، فستكون قادرًا على القيام بذلك. هذه فرصة مثالية للممارسة.

في الواقع، هذا ليس خيارًا. لا ينفد المساحة للاحتياجات اليومية على أي حال. كما أننا نستخدم حاليًا مساحة 600 جيجابايت ونستخدم ~50%. لا يوجد خيار أكبر - على الأقل ليس على Hetzner.

لهذا السبب سألت صراحة عن القرص الخارجي.

هل قمت بتشغيل ./launcher cleanup app من باب الفضول؟ هل لم يحرر ذلك مساحة كافية لإجراء الترقية في مكانها؟

إعجاب واحد (1)

هل يجب أن يهم ذلك من أجل إعادة البناء؟ سأفهم الأمر إذا كان إعادة تشغيل بسيطة، ولكن من أجل إعادة البناء؟

لم أكن أقترح الانتقال إلى قرص أكبر، فقط الحصول على سيرفر جديد تمامًا مثل ذلك. قم بتثبيت Discourse، واستعادة قاعدة البيانات الخاصة بك.

هذا سؤال جيد جدًا.

نعم. كل عملية إعادة بناء تنشئ حاوية جديدة وكل واحدة منها تستهلك مساحة. إذا لم تفعل ذلك من قبل، يمكنك أن توفر عشرات الجيجابايتات.

إعجاب واحد (1)

لترقية قاعدة البيانات، تحتاج إلى كل المساحة التي يمكنك الحصول عليها. لذا نعم. أقول إنها مهمة.

دليل التحديث الخاص بنا يتضمن دليلًا لحالتك المحددة

لقد أضفنا هذا الخيار للأشخاص في موقفك نفس. فقط تأكد من تخزين نسخة احتياطية خارج الموقع قبل محاولة هذا!

إعجابَين (2)

إذا كنت تستخدم جهازًا افتراضيًا، فمن الأسهل بكثير الانتقال إلى جهاز جديد، وهناك العديد من الفوائد. إليك بعض منها:

  • لا يوجد خطر - إذا حدث خطأ ما، فلا يزال لديك الخادم القديم الخاص بك
  • لا يوجد وقت تعطل - قراءة فقط على الخادم القديم
  • تحصل على ترقية نظام التشغيل التي ربما تحتاجها على أي حال
  • يمكنك التحقق من أنك تعرف كيفية تشغيل خادم جديد في حالة وقوع كارثة
  • لا تحتاج إلى إعادة الفهرسة والتنظيف
إعجاب واحد (1)

أقدر نصيحتكم يا رفاق.

شكرًا، هذا هو الخيار الآخر الذي ذكرت أنني على علم به. شكرًا على الإشارة إليه على أي حال.

لا أشك في ذلك - ومع ذلك، كنت أود استكشاف خيار إضافة مساحة تخزين إضافية لمهام الصيانة إذا لزم الأمر.

إعجابَين (2)

قد يكون من المفيد الاحتفاظ بتحميلاتك، أو على سبيل المثال /var/discourse/shared/web_only على مساحة تخزين شبكية. تحتاج إلى تحرير ملف yml للإشارة إليه بدلاً من استخدام رابط رمزي (الرابط الرمزي لا يعمل لأن الحاوية لا يمكنها الوصول إلى المكان الذي يشير إليه الرابط الرمزي الخاص بك).

بعد ذلك، إذا انتقلت إلى جهاز افتراضي جديد، يمكنك ببساطة إعادة تحميل مساحة تخزين الشبكة هذه بدلاً من نسخها.

لا أوصي بتخزين الشبكة لقاعدة البيانات لأنها أبطأ.

إعجاب واحد (1)

أعتقد أنه من المفيد تفصيل استخدامك. قد لا يكون حجم قاعدة البيانات الفعلي كبيرًا جدًا، إذا كان معظم استخدامك عبارة عن تحميلات، وجزء قاعدة البيانات فقط يتطلب مساحة أكبر بثلاث مرات تقريبًا أثناء الترقية.

يمكنك التحقق من الحجم النسبي للنسخة الاحتياطية مع التنزيلات مقارنة بنسخة احتياطية بدون تنزيلات.

أو، استخدم سطر الأوامر. إليك بعض المخرجات من منتدانا الصغير إلى حد ما:

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

بالنظر عن كثب:

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)

كان يجب أن أكون أكثر دقة في البداية ولكن لم أتوقع الحصول على مثل هذه التعليقات الواسعة الانتشار.

تحميلاتنا ونسخنا الاحتياطية موجودة على S3. حجم قاعدة البيانات على النظام المباشر يبلغ حوالي 230 جيجابايت الآن. النسخ الاحتياطية المضغوطة تبلغ حوالي 25 جيجابايت أعتقد.

4 إعجابات

واو، هذه واحدة من الكبيرة! بهذا الحجم، تكون عمليات قاعدة البيانات عادةً أكثر إزعاجًا بالفعل.

إعجابَين (2)

يو. هل قمت بالمكنسة الكهربائية مؤخرًا؟

لا، كنت أعتقد أن العملية التلقائية لتنظيف القاعدة يجب أن تتولى الأمر؟ أليس كذلك؟

أعتقد أنه يفترض ذلك. لست متأكدًا مما يؤدي إلى تشغيله. أعتقد أن القيام بعملية إضافية لا يضر وقد يوفر لك بعض المساحة. يوصى بذلك بعد إجراء الترقية إذا قمت بها في مكانها. لقد رأيت أنها تنظف مساحة كبيرة عدة مرات.

إذا كانت قاعدة بياناتك بحجم 230 جيجابايت، فسأقوم بالتأكيد باستعادتها إلى خادم جديد. سيكون وقت التعطل للقراءة والكتابة بحجم 230 جيجابايت كبيرًا.

إعجاب واحد (1)