أجريت للتو ترقية PostgreSQL 18 لتثبيت قياسي ولتكوين حاويتين منفصلتين دون أي مشاكل على الإطلاق. شكرًا مجددًا لـ @chrisr وفريقه على التعليمات السهلة.
بالنسبة لتكوين الحاويتين المنفصلتين خلف Cloudflare CDN مع دلاء R2 للرفع والنسخ الاحتياطي، كانت الخطوات التي استخدمتها كالتالي:
الخطوة 1: تنظيف القرص
# إزالة جميع بيانات docker غير المستخدمة
docker system prune -a -f
# مسح السجلات القديمة وكاش apt
journalctl --vacuum-time=2d
apt-get clean
apt-get autoremove -y
# التحقق من حجم قاعدة البيانات
du -sh /var/discourse/shared/data/postgres_data*
# التحقق من المساحة الحرة المتاحة الجديدة
df -h -x tmpfs -x devtmpfs
الخطوة 2: الصيانة والنسخ الاحتياطي
- قم بتحرير صفحة صيانة Cloudflare لتشير إلى تحديث نظام يستغرق 15-20 دقيقة (قد لا يستغرق هذا القدر من الوقت، من الأفضل توخي الحذر!) وقم بتعيين مؤقت إعادة تحميل لمدة 30 ثانية تقريبًا. فعّل مسار عامل Cloudflare (Cloudflare worker route) لعرض صفحة الصيانة.
- أطلق النسخ الاحتياطي عبر سطر الأوامر:
cd /var/discourse
./launcher enter web_only
discourse backup
exit
- سجّل الدخول إلى لوحة تحكم Cloudflare R2 وتحقق من مجلد النسخ الاحتياطي للتأكد من أن ملف النسخ الاحتياطي تم رفعه بنجاح
الخطوة 3: الإيقاف الآمن
- أوقف حاوية الويب أولًا لقطع أي اتصالات نشطة، ثم أوقف حاوية قاعدة البيانات:
cd /var/discourse
./launcher stop web_only
./launcher stop data
- تحقق من أن PostgreSQL تم إيقافه بشكل صحيح:
tail -n 20 shared/data/log/var-log/postgres/current
الخطوة 4: إعادة البناء والترقية
نفّذ الأوامر التالية بالترتيب التالي:
./launcher rebuild data # تصدير، هجرة، واستعادة postgresql 18
./launcher rebuild data # إعادة بناء حاوية قاعدة البيانات
./launcher rebuild web_only # إعادة بناء تطبيق الويب
الخطوة 5: التحسين والتنظيف
- أنشئ إحصاءات جداول pg18 الناقصة، وإلا سيكون المنتدى أبطأ من المعتاد:
docker exec -u postgres data /usr/lib/postgresql/18/bin/vacuumdb -d discourse --analyze-in-stages
- اختبر المنتدى للتأكد من أن كل شيء يعمل - يجب ألا تكون صفحة الصيانة محمّلة الآن إذا كان لديك مؤقت إعادة تحميل مضبوط عليها.
- احذف مسار عامل Cloudflare (Cloudflare worker route) المتجه إلى صفحة الصيانة (لا نريد الوصول إلى الحد اليومي البالغ 100,000!)
- احذف بيانات pg18 القديمة لاستعادة مساحة القرص تلك:
rm -fr /var/discourse/shared/data/postgres_data_old/
تم!
![]()
