لدي تثبيت قياسي يحاول استعادة قاعدة بيانات. إنه يفشل في الترحيل.
ALTER TABLE
ترحيل قاعدة البيانات...
استثناء: rake db:migrate
فشل ترحيل قاعدة البيانات.
تم إيقاف rake!
StandardError: حدث خطأ، تم إلغاء هذا الترحيل وجميع الترحيلات اللاحقة: (StandardError)
PG::DiskFull: خطأ: لا يمكن الكتابة إلى الملف "base/pgsql_tmp/pgsql_tmp11009.51": لا يوجد مساحة متبقية على الجهاز
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rack-mini-profiler-4.0.1/lib/patches/db/pg/alias_method.rb:109:in `exec'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rack-mini-profiler-4.0.1/lib/patches/db/pg/alias_method.rb:109:in `async_exec'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.4/lib/active_record/connection_adapters/postgresql/database_state
ments.rb:167:in `perform_query'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.4/lib/active_record/connection_adapters/abstract/database_stateme
nts.rb:556:in `block (2 levels) in raw_execute'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.4/lib/active_record/connection_adapters/abstract_adapter.rb:1017:in `block in with_raw_connection'
يوجد 90 جيجابايت من البيانات الحرة على القرص. في قرص المصدر، يبلغ حجم دليل postgres حوالي 23 جيجابايت فقط.
كيف تفشل قاعدة بيانات بحجم 23 جيجابايت في الاستعادة أثناء ترحيل قاعدة البيانات مع وجود 90 جيجابايت حرة؟
بعد استعادة قاعدة البيانات، كان حجم postgres_data يبلغ 24 جيجابايت.
شيء ما في عملية الترحيل تسبب في تضخم postgres_data إلى 91 جيجابايت قبل أن تمتلئ القرص وتفشل عملية الاستعادة. هذا يحدث في تثبيت نظيف باستخدام إصدارات Discourse الموضحة أعلاه.
يبدو أن هذا يجب أن يكون خطأً، لذا أقوم بإعادة التصنيف. لقد رأيت هذا أيضًا عند محاولة الترقية. اعتقدت أنه بالنسبة لتلك الترقية، سيكون الحل هو الانتقال إلى خادم جديد، ولكنني أرى الآن أن ذلك لن ينجح.
أعتقد أن الشيء التالي الذي يجب القيام به هو محاولة معرفة الاستعلام الذي يسبب هذا و/أو الجدول الذي يسببه. لست متأكدًا تمامًا من كيفية المتابعة في ذلك.
أنا أضع هذا في الدعم، هذه الرسالة تأتي مباشرة من نظام الملفات، إذا اعتقدت قاعدة البيانات (PG) أنه لا يوجد مساحة، فمن المحتمل أنه لا توجد مساحة لأنه لم يتم تخصيص مساحة كافية لها.
مجموعة من عمليات الترحيل (migrations) تعيد كتابة الجداول بأكملها، مما قد يستهلك مساحة أكبر مؤقتًا، و PostgreSQL لا تعيد المساحة إلى النظام بشكل عدواني أيضًا.
هل هذا المنتدى مفعل به الذكاء الاصطناعي (AI) مع التضمينات (embeddings)؟
إذا كنت ترغب في التعمق أكثر، يمكنك استعادته يدويًا إلى بيئة تطوير (dev environment) بتاريخ تثبيت مايو 2025، ثم الانتقال إلى التثبيت الحالي وتشغيل عمليات الترحيل (migrations) واحدة تلو الأخرى وطباعة المسافة قبل وبعد كل واحدة — بالطبع باستخدام برنامج نصي .