تحديث PostgreSQL 18 لمستخدمي الاستضافة الذاتية

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

لقد قمت للتو بتحديث 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: الصيانة والنسخ الاحتياطي

  1. قم بتحرير صفحة صيانة Cloudflare لتقول “صيانة نظام لمدة 15-20 دقيقة” وقم بضبط مؤقت إعادة التحميل (قد لا يستغرق هذا القدر من الوقت، لكن من الأفضل أن تكون آمناً!). قم بتشغيل مسار عامل Cloudflare لعرض صفحة الصيانة.

  1. تشغيل نسخة احتياطية عبر سطر الأوامر:
cd /var/discourse
./launcher enter web_only
discourse backup
exit
  1. تسجيل الدخول إلى لوحة تحكم Cloudflare R2 والتحقق من مجلد النسخ الاحتياطي للتأكد من رفع ملف النسخ الاحتياطي بنجاح

الخطوة 3: الإغلاق الآمن

  1. أوقف حاوية الويب أولاً لإنهاء أي اتصالات نشطة، ثم أوقف حاوية قاعدة البيانات:
cd /var/discourse
./launcher stop web_only
./launcher stop data
  1. تحقق من أن 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: التحسين والتنظيف

  1. إنشاء إحصائيات الجدول المفقودة لـ pg18، وإلا سيكون المنتدى أبطأ من المعتاد:
docker exec -u postgres data /usr/lib/postgresql/18/bin/vacuumdb -d discourse --analyze-in-stages
  1. اختبر المنتدى للتأكد من أن كل شيء يعمل بشكل صحيح - لا ينبغي تحميل صفحة الصيانة الآن إذا كان لديك مؤقت إعادة تحميل مضبوط عليها.
  2. إزالة مسار عامل Cloudflare إلى صفحة الصيانة (لا نريد الوصول إلى الحد اليومي البالغ 100,000!)
  3. حذف بيانات pg18 القديمة لاستعادة مساحة القرص:
rm -fr /var/discourse/shared/data/postgres_data_old/

تم! :partying_face: :clinking_beer_mugs:

3 إعجابات