سؤال

أواجه مشكلة في المساحة مع mongoDB وجهاز الكمبيوتر المكتبي الحالي الذي يعمل بنظام التشغيل ubuntu 12.04.لقد استخدمت دائمًا الإعداد الافتراضي مما يعني أنه يتم تخزين البيانات فعليًا ضمن /var/lib/mongodb.بحلول الوقت الذي نما فيه حجم قاعدة البيانات بشكل كبير والآن أرغب في إسقاط بعض المجموعات للحصول على بعض المساحة الفارغة على محرك الأقراص الثابتة الخاص بي.لقد تفحصت هذا وطرق أخرى ولكن عندما أقوم بتشغيل وظيفة الإزالة، أستمر في تلقي رسالة الخطأ التالية:

Can't take a write lock while out of disk space

الحل الأول الذي يتبادر إلى ذهني هو تعيين مسار mongodb إلى قرص صلب خارجي أو قرص USB وإزالة المجلد فعليًا باستخدام rm -rf.فهل سيكون ذلك حلا آمنا؟هل هناك حلول أخرى لهذه المشكلة؟

هل كانت مفيدة؟

المحلول

يعد Mongodb جيدًا جدًا لنسخ قواعد البيانات حيث أن كل ما عليك فعله هو نسخ دليل البيانات الكامل إلى مكان آخر ومن ثم يمكنك فقط توجيه عملية mongod جديدة إليه وستعمل.

لذلك خطواتك هي:

  • ابحث عن دليل البيانات الحالي
  • انسخ هذا إلى موقع آخر
  • حذف أي ملف يحتوي على .lock في الدليل (هذا يمنع Mongo من التحميل مرة أخرى)
  • الآن ابدأ تشغيل مونغو آخر باستخدام الأمر التالي:

    mongod --dbpath <path to new directory on new disk> --port 27020
    

سيؤدي هذا الآن إلى فتح قاعدة بيانات mongo جديدة (ولكن على منفذ مختلف لتجنب أي مشكلات مع mongod الذي قد يكون قيد التشغيل بالفعل).الآن سيكون لديك mongod جديد يعمل على القرص الجديد دون الحاجة إلى حذف Collections \ dbs.تذكر أن Mongodb جشع ولا يتخلى عن مساحة القرص عن طيب خاطر عند حذف مجموعة.سوف تحتاج إلى تشغيل

 db.repairDatabase()

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top