لقد قمت للتو بتحديث 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 دقيقة” وقم بضبط مؤقت إعادة التحميل (قد لا يستغرق هذا القدر من الوقت، لكن من الأفضل أن تكون آمناً!). قم بتشغيل مسار عامل Cloudflare لعرض صفحة الصيانة.
- تشغيل نسخة احتياطية عبر سطر الأوامر:
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 إلى صفحة الصيانة (لا نريد الوصول إلى الحد اليومي البالغ 100,000!)
- حذف بيانات pg18 القديمة لاستعادة مساحة القرص:
rm -fr /var/discourse/shared/data/postgres_data_old/
تم!
![]()
