كيفية تثبيت MongoDB على أوبونتو: دليل شامل

2024-08-22

المقدمة

MongoDB هي قاعدة بيانات NoSQL مفتوحة المصدر وشائعة توفر أداءً عاليًا وتوافرًا عاليًا وسهولة في التوسع. تم تصميمها لتخزين وإدارة كميات كبيرة من البيانات غير المنظمة أو شبه المنظمة، مما يجعلها خيارًا ممتازًا للتطبيقات الحديثة التي تتعامل مع هياكل بيانات معقدة وسريعة التغير.

نظرة عامة موجزة عن MongoDB

تخزن MongoDB البيانات في مستندات مرنة تشبه JSON تُسمى BSON (Binary JSON). تتيح هذه الطريقة الموجهة نحو المستندات وجود مخططات ديناميكية، مما يعني أنه يمكنك تخزين مستندات بهياكل مختلفة في نفس المجموعة. تشمل الميزات الرئيسية لـ MongoDB:

  1. تخزين موجه نحو المستندات: يتم تخزين البيانات في مستندات مرنة بدلاً من الصفوف والأعمدة.
  2. دعم الفهرسة الكاملة: تدعم MongoDB الفهرسة على أي خاصية.
  3. التكرار والتوافر العالي: توفر MongoDB تكرارًا مدمجًا وفشل تلقائي.
  4. التجزئة: يمكن لـ MongoDB توزيع البيانات عبر عدة آلات.
  5. التجميع: تقدم إطار عمل قوي للتجميع لتحليل البيانات.

لماذا تستخدم MongoDB على أوبونتو؟

أوبونتو هي واحدة من أكثر توزيعات لينكس شعبية، معروفة بسهولة استخدامها، وتحديثاتها المنتظمة، ودعم المجتمع القوي. هناك عدة أسباب تجعل MongoDB وأوبونتو مزيجًا رائعًا:

  1. التوافق: يتم دعم MongoDB بشكل جيد على أوبونتو، مع توفر حزم رسمية.
  2. الأداء: يكمل إدارة الموارد الفعالة في أوبونتو قدرات الأداء العالي لـ MongoDB.
  3. الدعم طويل الأمد: توفر كل من إصدارات أوبونتو LTS (الدعم طويل الأمد) وMongoDB دعمًا ممتدًا، مما يضمن الاستقرار لبيئات الإنتاج الخاصة بك.
  4. مجتمع كبير: لكل من MongoDB وأوبونتو مجتمعات كبيرة ونشطة، مما يسهل العثور على حلول للمشكلات المحتملة.
  5. الأمان: توفر ميزات الأمان القوية في أوبونتو، جنبًا إلى جنب مع خيارات الأمان في MongoDB، أساسًا قويًا لحماية بياناتك.

المتطلبات المسبقة

قبل أن نبدأ عملية التثبيت، من المهم التأكد من أن نظامك يلبي المتطلبات اللازمة وأن لديك الأذونات المناسبة. دعنا نستعرض المتطلبات المسبقة لتثبيت MongoDB على أوبونتو.

إصدارات أوبونتو المدعومة

تدعم MongoDB إصدارات أوبونتو LTS (الدعم طويل الأمد) التالية:

  • أوبونتو 20.04 LTS (Focal Fossa)
  • أوبونتو 18.04 LTS (Bionic Beaver)
  • أوبونتو 16.04 LTS (Xenial Xerus)

يوصى باستخدام أحدث إصدار LTS من أوبونتو للحصول على أداء وأمان مثاليين. سيركز هذا الدليل على أوبونتو 20.04 LTS، لكن يجب أن تكون الخطوات مشابهة للإصدارات المدعومة الأخرى.

متطلبات النظام

يمكن أن تعمل MongoDB على أنظمة ذات موارد متنوعة، ولكن للحصول على أداء مثالي، ضع في اعتبارك التوصيات التالية:

  1. وحدة المعالجة المركزية:

    • الحد الأدنى: 2 نواة
    • الموصى به: 4 نوى أو أكثر للاستخدام الإنتاجي
  2. الذاكرة العشوائية (RAM):

    • الحد الأدنى: 4 جيجابايت
    • الموصى به: 8 جيجابايت أو أكثر للاستخدام الإنتاجي
  3. التخزين:

    • الحد الأدنى: 10 جيجابايت مساحة خالية
    • الموصى به: SSD لتحسين الأداء
  4. البنية:

    • نظام 64 بت (لا تدعم MongoDB الأنظمة 32 بت)

الأذونات المطلوبة

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

للتحقق مما إذا كان لديك صلاحيات sudo، يمكنك تشغيل الأمر التالي في الطرفية:

sudo -v

إذا تم طلب كلمة مرورك وتم تنفيذ الأمر دون أي أخطاء، فإن لديك صلاحيات sudo.

متطلبات إضافية

  1. اتصال بالإنترنت: ستحتاج إلى اتصال إنترنت نشط لتنزيل MongoDB والاعتماديات الخاصة بها.

  2. الوصول إلى الطرفية: يجب أن تكون مرتاحًا لاستخدام واجهة سطر الأوامر (CLI) حيث سنستخدم الطرفية لمعظم عملية التثبيت والتكوين.

  3. مدير الحزم: تأكد من أن مدير الحزم في نظامك (apt) يعمل بشكل صحيح.

  4. تكوين جدار الحماية: إذا كان لديك جدار حماية مفعل (مثل UFW)، قد تحتاج إلى تكوينه للسماح بحركة مرور MongoDB.

  5. SELinux: إذا كان لديك SELinux مفعل، قد تحتاج إلى تكوينه للسماح لـ MongoDB بالعمل بشكل صحيح.

تحديث النظام

قبل تثبيت MongoDB، من الضروري التأكد من أن نظام أوبونتو الخاص بك محدث. هذه الخطوة مهمة لعدة أسباب:

  1. الأمان: غالبًا ما تتضمن التحديثات تصحيحات أمان مهمة.
  2. الاستقرار: يمكن أن تصلح التحديثات الأخيرة الأخطاء وتحسن استقرار النظام.
  3. التوافق: يمكن أن يمنع وجود أحدث الحزم حدوث مشكلات توافق محتملة أثناء تثبيت MongoDB.

أهمية تحديث النظام

يعد الحفاظ على تحديث نظامك جانبًا أساسيًا من جوانب الحفاظ على تثبيت أوبونتو صحي وآمن. يضمن أن لديك أحدث تصحيحات الأمان، وإصلاحات الأخطاء، وتحسينات الميزات. هذا مهم بشكل خاص عندما تكون على وشك تثبيت برنامج جديد مثل MongoDB، حيث يساعد في منع النزاعات ويضمن أنك تعمل مع أحدث الإصدارات المتوافقة من جميع مكونات النظام.

الأوامر لتحديث أوبونتو

لتحديث نظام أوبونتو الخاص بك، اتبع الخطوات التالية:

  1. افتح الطرفية الخاصة بك. يمكنك القيام بذلك عن طريق الضغط على Ctrl + Alt + T أو من خلال البحث عن "Terminal" في لوحة تحكم أوبونتو.

  2. أولاً، قم بتحديث قوائم الحزم للتحديثات وتثبيت الحزم الجديدة. قم بتشغيل الأمر التالي:

    sudo apt update
    

    يقوم هذا الأمر بتحديث قائمة الحزم المتاحة وإصداراتها، لكنه لا يقوم بتثبيت أو ترقية أي حزم.

  3. بعد اكتمال التحديث، قم بترقية الحزم المثبتة إلى أحدث إصداراتها:

    sudo apt upgrade
    

    سيظهر لك هذا الأمر قائمة بالحزم التي سيتم ترقيتها. راجع القائمة واضغط على 'Y' ثم 'Enter' لتأكيد المتابعة مع الترقية.

  4. (اختياري) إذا كنت ترغب في التأكد من ترقية جميع الحزم المثبتة إلى أحدث إصداراتها، بما في ذلك تلك التي تتطلب تثبيت حزم جديدة أو إزالة الحزم الموجودة، يمكنك استخدام الأمر التالي:

    sudo apt full-upgrade
    

    كن حذرًا مع هذا الأمر لأنه قد يزيل بعض الحزم إذا لزم الأمر لحل النزاعات.

  5. بعد اكتمال عملية الترقية، من الجيد إعادة تشغيل نظامك للتأكد من تطبيق جميع التحديثات بشكل صحيح:

    sudo reboot
    

التحقق من التحديث

بعد إعادة تشغيل نظامك، يمكنك التحقق من نجاح التحديث من خلال التحقق من إصدار أوبونتو:

lsb_release -a

سيعرض هذا الأمر معلومات حول توزيع أوبونتو الخاص بك، بما في ذلك رقم الإصدار.

من خلال الحفاظ على تحديث نظامك، فإنك تضع أساسًا قويًا لعملية تثبيت MongoDB. الأنظمة المحدثة أقل عرضة لمواجهة مشكلات توافق أو ثغرات أمنية أثناء وبعد التثبيت.

تثبيت MongoDB

الآن بعد أن أصبح نظامك محدثًا، يمكننا المضي قدمًا في تثبيت MongoDB. سنمر بالعملية خطوة بخطوة، بما في ذلك إضافة مستودع MongoDB، واستيراد المفتاح العام، وتثبيت حزم MongoDB.

إضافة مستودع MongoDB

MongoDB غير متوفر في المستودعات الافتراضية لأوبونتو. لذلك، نحتاج إلى إضافة المستودع الرسمي لـ MongoDB إلى نظامنا.

  1. أولاً، دعنا نضيف مستودع MongoDB إلى قائمة المصادر الخاصة بنا. أنشئ ملف قائمة لـ MongoDB باستخدام الأمر التالي:

    echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
    

    ملاحظة: هذا الأمر مخصص لأوبونتو 20.04 (Focal Fossa) وMongoDB 5.0. إذا كنت تستخدم إصدار أوبونتو مختلفًا أو ترغب في إصدار مختلف من MongoDB، ستحتاج إلى تعديل الأمر وفقًا لذلك.

استيراد المفتاح العام

  1. لضمان مصداقية الحزم التي نحن على وشك تثبيتها، نحتاج إلى استيراد مفتاح GPG العام لـ MongoDB:

    wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
    

    إذا كان الأمر ناجحًا، سترى الإخراج "OK".

تثبيت حزم MongoDB

  1. بعد إضافة المستودع واستيراد المفتاح، قم بتحديث قائمة الحزم:

    sudo apt update
    
  2. الآن، قم بتثبيت MongoDB:

    sudo apt install -y mongodb-org
    

    سيقوم هذا الأمر بتثبيت الحزم التالية:

    • mongodb-org (حزمة ميتا تقوم تلقائيًا بتثبيت الحزم الأربعة المكونة المدرجة أدناه)
    • mongodb-org-server (خدمة mongod والبرامج النصية المرتبطة بالتكوين والتهيئة)
    • mongodb-org-mongos (خدمة mongos)
    • mongodb-org-shell (واجهة mongo)
    • mongodb-org-tools (تحتوي على عدة أدوات MongoDB لاستيراد وتصدير البيانات والإحصائيات وغيرها من الأدوات)

التحقق من التثبيت

  1. بمجرد اكتمال التثبيت، يمكنك التحقق من إصدار MongoDB عن طريق تشغيل:

    mongod --version
    

    يجب أن يعرض هذا إصدار MongoDB الذي قمت بتثبيته للتو.

  2. يجب أن تبدأ MongoDB تلقائيًا بعد التثبيت. يمكنك التحقق من حالتها باستخدام:

    sudo systemctl status mongod
    

    إذا كانت MongoDB تعمل، يجب أن ترى إخراجًا يشير إلى أن الخدمة نشطة (تعمل).

  3. إذا لم تكن MongoDB تعمل، يمكنك بدء تشغيلها باستخدام:

    sudo systemctl start mongod
    
  4. لضمان بدء تشغيل MongoDB تلقائيًا عند إعادة تشغيل النظام، قم بتشغيل:

    sudo systemctl enable mongod
    

تكوين MongoDB

بعد تثبيت MongoDB بنجاح، الخطوة التالية هي تكوينها وفقًا لاحتياجاتك. في هذا القسم، سنغطي فهم ملف التكوين، وإعدادات التكوين الأساسية، وكيفية تأمين MongoDB من خلال تمكين المصادقة.

فهم ملف التكوين

ملف التكوين الرئيسي لـ MongoDB هو mongod.conf. على أوبونتو، يقع هذا الملف عادةً في /etc/mongod.conf. يستخدم هذا الملف تنسيق YAML لإعدادات التكوين.

لعرض محتويات هذا الملف، يمكنك استخدام الأمر التالي:

sudo nano /etc/mongod.conf

إعدادات التكوين الأساسية

دعنا نستعرض بعض إعدادات التكوين الرئيسية:

  1. bindIp: بشكل افتراضي، يتم تعيينه على 127.0.0.1، مما يعني أن MongoDB ستقبل الاتصالات فقط من localhost. إذا كنت بحاجة إلى قبول الاتصالات من مضيفين بعيدين، ستحتاج إلى تغيير هذا.

  2. port: المنفذ الافتراضي هو 27017. يمكنك تغييره إذا لزم الأمر، لكن تذكر تحديث قواعد جدار الحماية الخاصة بك وفقًا لذلك.

  3. dbPath: يحدد مكان تخزين MongoDB لملفات البيانات. الافتراضي هو /var/lib/mongodb.

  4. logPath: يحدد مكان كتابة MongoDB لسجلاتها. الافتراضي هو /var/log/mongodb/mongod.log.

إليك مثال على كيفية ظهور هذه الإعدادات في ملف التكوين الخاص بك:

# واجهات الشبكة
net:
  port: 27017
  bindIp: 127.0.0.1

# مكان كتابة بيانات السجل
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# مكان وكيفية تخزين البيانات
storage:
  dbPath: /var/lib/mongodb

تأمين MongoDB (تمكين المصادقة)

بشكل افتراضي، لا تتطلب MongoDB المصادقة. من الضروري تمكين ذلك لبيئات الإنتاج.

  1. أولاً، ابدأ واجهة MongoDB:

    mongo
    
  2. انتقل إلى قاعدة البيانات الإدارية:

    use admin
    
  3. أنشئ مستخدمًا إداريًا:

    db.createUser(
      {
        user: "adminUser",
        pwd: "securePassword",
        roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
      }
    )
    

    استبدل "adminUser" و"securePassword" باسم المستخدم وكلمة المرور التي تختارها.

  4. اخرج من واجهة MongoDB:

    exit
    
  5. الآن، قم بتحرير ملف التكوين لـ MongoDB:

    sudo nano /etc/mongod.conf
    
  6. أضف أو عدل قسم الأمان لتمكين المصادقة:

    security:
      authorization: enabled
    
  7. احفظ الملف واخرج من المحرر.

  8. أعد تشغيل MongoDB لتطبيق التغييرات:

    sudo systemctl restart mongod
    

الآن، ستتطلب MongoDB المصادقة لجميع الاتصالات. للاتصال بـ MongoDB مع المصادقة، ستستخدم أمرًا مثل هذا:

mongo -u adminUser -p --authenticationDatabase admin

سيتم مطالبتك بإدخال كلمة المرور الخاصة بك.

تذكر استبدال المعلومات الحساسة مثل أسماء المستخدمين وكلمات المرور بقيم آمنة في تكوينك الفعلي.

بدء وإيقاف MongoDB

إدارة خدمة MongoDB هي جزء حيوي من إدارة قاعدة البيانات. في هذا القسم، سنغطي كيفية بدء وإيقاف وإعادة تشغيل والتحقق من حالة خدمة MongoDB على أوبونتو.

بدء خدمة MongoDB

إذا لم تكن MongoDB تعمل بالفعل، يمكنك بدء تشغيلها باستخدام الأمر التالي:

sudo systemctl start mongod

يخبر هذا الأمر systemd (مدير النظام والخدمات لأوبونتو) ببدء خدمة MongoDB.

إيقاف خدمة MongoDB

إذا كنت بحاجة إلى إيقاف MongoDB، ربما للصيانة أو تغييرات التكوين، استخدم هذا الأمر:

sudo systemctl stop mongod

سيؤدي ذلك إلى إيقاف خدمة MongoDB بشكل سلس.

إعادة تشغيل خدمة MongoDB

إذا قمت بإجراء تغييرات على ملف تكوين MongoDB أو إذا كنت ترغب فقط في إعادة تشغيل الخدمة، يمكنك استخدام:

sudo systemctl restart mongod

يوقف هذا الأمر الخدمة ثم يبدأها مرة أخرى.

التحقق من حالة الخدمة

للتحقق من الحالة الحالية لخدمة MongoDB، استخدم:

sudo systemctl status mongod

سيعرض هذا معلومات حول خدمة MongoDB، بما في ذلك ما إذا كانت نشطة (تعمل) أو غير نشطة (متوقفة)، ومدة تشغيلها، ومدخلات السجل الأخيرة.

سيبدو الإخراج شيئًا مثل هذا:

● mongod.service - خادم قاعدة بيانات MongoDB
     Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2023-05-22 15:30:45 UTC; 2h 35min ago
       Docs: https://docs.mongodb.org/manual
   Main PID: 1234 (mongod)
     Memory: 178.0M
     CGroup: /system.slice/mongod.service
             └─1234 /usr/bin/mongod --config /etc/mongod.conf

تمكين MongoDB لتبدأ عند الإقلاع

لضمان بدء تشغيل MongoDB تلقائيًا عند بدء تشغيل نظامك، يمكنك تمكين الخدمة:

sudo systemctl enable mongod

على العكس، إذا كنت ترغب في تعطيل MongoDB من البدء تلقائيًا عند الإقلاع:

sudo systemctl disable mongod

التحقق من سجلات MongoDB

إذا كنت بحاجة إلى استكشاف المشكلات أو ترغب فقط في مراقبة نشاط MongoDB، يمكنك عرض ملف السجل الخاص بها:

sudo tail -f /var/log/mongodb/mongod.log

سيظهر لك هذا الأمر آخر بضع سطور من ملف السجل وسيتم تحديثه في الوقت الحقيقي مع إضافة مدخلات سجل جديدة. استخدم Ctrl+C للخروج من عرض السجل.

تذكر، في أي وقت تقوم فيه بإجراء تغييرات على ملف تكوين MongoDB (/etc/mongod.conf)، ستحتاج إلى إعادة تشغيل الخدمة لتطبيق تلك التغييرات.

الاتصال بـ MongoDB

الآن بعد أن تم تثبيت MongoDB وتكوينها وتشغيلها، دعنا نتعلم كيفية الاتصال بها وإجراء بعض العمليات الأساسية. سنستخدم واجهة MongoDB، وهي واجهة تفاعلية بلغة JavaScript لـ MongoDB.

استخدام واجهة MongoDB

  1. لبدء واجهة MongoDB، افتح الطرفية واكتب:

    mongo
    

    إذا كنت قد قمت بتمكين المصادقة، ستحتاج إلى الاتصال باسم مستخدم وكلمة مرور:

    mongo -u adminUser -p --authenticationDatabase admin
    

    سيتم مطالبتك بإدخال كلمة المرور الخاصة بك.

  2. بمجرد الاتصال، سترى موجه واجهة MongoDB:

    إصدار واجهة MongoDB v5.0.x
    الاتصال بـ: mongodb://127.0.0.1:27017
    إصدار خادم MongoDB: 5.0.x
    >
    

إنشاء قاعدة بيانات ومجموعة

  1. لإنشاء قاعدة بيانات جديدة (أو التبديل إلى قاعدة بيانات موجودة)، استخدم الأمر use:

    use myNewDatabase
    

    ستقوم MongoDB بإنشاء قاعدة البيانات إذا لم تكن موجودة وتبديلها.

  2. لإنشاء مجموعة جديدة، يمكنك ببساطة إدراج مستند فيها:

    db.myCollection.insertOne({ name: "John Doe", age: 30, city: "New York" })
    

    هذا ينشئ مجموعة باسم myCollection ويقوم بإدراج مستند فيها.

العمليات الأساسية CRUD

دعنا نقوم ببعض العمليات الأساسية لإنشاء، قراءة، تحديث، وحذف (CRUD):

  1. إنشاء (إدراج) المزيد من المستندات:

    db.myCollection.insertMany([
      { name: "Jane Smith", age: 25, city: "San Francisco" },
      { name: "Bob Johnson", age: 35, city: "Chicago" }
    ])
    
  2. قراءة (استعلام) المستندات:

    // العثور على جميع المستندات في المجموعة
    db.myCollection.find()
    
    // العثور على المستندات التي تطابق معايير معينة
    db.myCollection.find({ city: "New York" })
    
    // العثور على مستند واحد
    db.myCollection.findOne({ name: "John Doe" })
    
  3. تحديث المستندات:

    // تحديث مستند واحد
    db.myCollection.updateOne(
      { name: "John Doe" },
      { $set: { age: 31 } }
    )
    
    // تحديث مستندات متعددة
    db.myCollection.updateMany(
      { city: "New York" },
      { $set: { country: "USA" } }
    )
    
  4. حذف المستندات:

    // حذف مستند واحد
    db.myCollection.deleteOne({ name: "Jane Smith" })
    
    // حذف مستندات متعددة
    db.myCollection.deleteMany({ age: { $lt: 30 } })
    
  5. للخروج من واجهة MongoDB، اكتب:

    exit
    

أوامر إضافية مفيدة

إليك بعض الأوامر المفيدة الأخرى:

  • عرض جميع قواعد البيانات: show dbs
  • عرض جميع المجموعات في قاعدة البيانات الحالية: show collections
  • عرض المساعدة: help

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

تمكين الوصول عن بُعد (اختياري)

بشكل افتراضي، يتم تكوين MongoDB للسماح بالاتصالات من localhost فقط. ومع ذلك، في بعض السيناريوهات، قد تحتاج إلى الوصول إلى مثيل MongoDB الخاص بك من جهاز بعيد. ستوجهك هذه القسم خلال عملية تمكين الوصول عن بُعد إلى خادم MongoDB الخاص بك.

تعديل التكوين للوصول عن بُعد

  1. أولاً، افتح ملف تكوين MongoDB:

    sudo nano /etc/mongod.conf
    
  2. ابحث عن قسم net في ملف التكوين. يجب أن يبدو شيئًا مثل هذا:

    net:
      port: 27017
      bindIp: 127.0.0.1
    
  3. غير قيمة bindIp للسماح بالاتصالات من جميع عناوين IP:

    net:
      port: 27017
      bindIp: 0.0.0.0
    

    هذا يخبر MongoDB بالاستماع للاتصالات على جميع عناوين IP المتاحة.

  4. احفظ الملف واخرج من المحرر.

  5. أعد تشغيل MongoDB لتطبيق التغييرات:

    sudo systemctl restart mongod
    

تكوين إعدادات جدار الحماية

إذا كان لديك جدار حماية مفعل (مثل UFW على أوبونتو)، تحتاج إلى فتح منفذ MongoDB (الافتراضي هو 27017) للسماح بالاتصالات الواردة.

  1. لفتح المنفذ باستخدام UFW:

    sudo ufw allow 27017
    
  2. يمكنك التحقق من حالة UFW باستخدام:

    sudo ufw status
    

اعتبارات الأمان

إن تمكين الوصول عن بُعد إلى خادم MongoDB الخاص بك يقدم مخاطر أمان محتملة. إليك بعض التدابير الأمنية المهمة التي يجب مراعاتها:

  1. استخدم مصادقة قوية: تأكد من أنك قد قمت بتمكين المصادقة وتستخدم كلمات مرور قوية وفريدة لجميع مستخدمي قاعدة البيانات.

  2. تمكين SSL/TLS: قم بتكوين MongoDB لاستخدام SSL/TLS لجميع الاتصالات الواردة لتشفير البيانات أثناء النقل.

  3. استخدم VPN أو نفق SSH: بدلاً من تعريض MongoDB مباشرةً للإنترنت، فكر في استخدام VPN أو نفق SSH للوصول عن بُعد.

  4. تنفيذ قائمة بيضاء لعناوين IP: إذا كان ذلك ممكنًا، قم بتكوين جدار الحماية للسماح بالاتصالات من عناوين IP أو نطاقات معينة فقط.

  5. احتفظ بـ MongoDB محدثًا: قم بتحديث MongoDB بانتظام إلى أحدث إصدار لضمان حصولك على أحدث تصحيحات الأمان.

الاتصال من عميل بعيد

بمجرد تمكين الوصول عن بُعد، يمكنك الاتصال بمثيل MongoDB الخاص بك من جهاز بعيد باستخدام سلسلة اتصال مثل هذه:

mongodb://username:password@server_ip_address:27017/database_name

استبدل username وpassword وserver_ip_address وdatabase_name بالقيم الفعلية الخاصة بك.

التحقق من الاتصال عن بُعد

للتحقق من أن الاتصالات عن بُعد تعمل:

  1. من جهاز آخر، يمكنك استخدام واجهة MongoDB للاتصال:

    mongo --host server_ip_address -u username -p --authenticationDatabase admin
    

    استبدل server_ip_address وusername بالقيم الفعلية الخاصة بك. سيتم مطالبتك بإدخال كلمة المرور.

  2. إذا كانت الاتصال ناجحًا، سترى موجه واجهة MongoDB.

تذكر، يجب أن يتم تمكين الوصول عن بُعد بحذر وفقط عند الضرورة. دائمًا ما تعطي الأولوية للأمان عند تعريض قاعدة بياناتك للاتصالات الخارجية.

النسخ الاحتياطي واستعادة MongoDB

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

إنشاء نسخ احتياطية من قاعدة البيانات

توفر MongoDB أداتين رئيسيتين لإنشاء النسخ الاحتياطية: mongodump وmongorestore.

استخدام mongodump

mongodump هي أداة تقوم بإنشاء تصدير ثنائي لمحتويات قاعدة البيانات.

  1. لنسخ جميع قواعد البيانات احتياطيًا:

    mongodump --out /path/to/backup/directory
    
  2. لنسخ قاعدة بيانات معينة احتياطيًا:

    mongodump --db database_name --out /path/to/backup/directory
    
  3. إذا كان لديك مصادقة مفعلة، استخدم:

    mongodump --username your_username --password your_password --authenticationDatabase admin --out /path/to/backup/directory
    

استخدام mongorestore

mongorestore هي بديل يقوم بإنشاء تصدير JSON لبياناتك.

  1. لنسخ جميع قواعد البيانات احتياطيًا:

    mongorestore /path/to/backup/directory
    
  2. لاستعادة قاعدة بيانات معينة:

    mongorestore --db database_name /path/to/backup/directory/database_name
    

استعادة من النسخ الاحتياطية

لاستعادة بياناتك، يمكنك استخدام أداة mongorestore.

الاستعادة من mongodump

  1. لاستعادة جميع قواعد البيانات:

    mongorestore /path/to/backup/directory
    
  2. لاستعادة قاعدة بيانات معينة:

    mongorestore --db database_name /path/to/backup/directory/database_name
    
  3. إذا كان لديك مصادقة مفعلة:

    mongorestore --username your_username --password your_password --authenticationDatabase admin /path/to/backup/directory
    

الاستعادة من mongorestore

تكون العملية مشابهة لـ mongorestore:

  1. لاستعادة جميع قواعد البيانات:

    mongorestore /path/to/backup/directory
    
  2. لاستعادة قاعدة بيانات معينة:

    mongorestore --db database_name /path/to/backup/directory/database_name
    

أفضل الممارسات لنسخ احتياطي MongoDB

  1. نسخ احتياطي منتظم: جدولة النسخ الاحتياطية بانتظام، مع تكرار يعتمد على مدى تغير بياناتك.

  2. تخزين النسخ الاحتياطية في موقع بعيد: تخزين النسخ الاحتياطية في موقع مختلف عن قاعدة البيانات الأساسية لحمايتها من الكوارث المادية.

  3. التحقق من النسخ الاحتياطية: اختبار النسخ الاحتياطية بانتظام من خلال إجراء استعادة اختبارية للتأكد من أنها تعمل بشكل صحيح.

  4. استعادة النقطة الزمنية: لبيئات الإنتاج، فكر في استخدام سجل العمليات (oplog) لـ MongoDB لاستعادة النقطة الزمنية.

  5. الضغط: استخدم الضغط لتقليل حجم النسخ الاحتياطية، خاصةً لقواعد البيانات الكبيرة.

    mongodump --gzip --out /path/to/backup/directory
    
  6. الأتمتة: استخدم السكربتات أو الأدوات لأتمتة عملية النسخ الاحتياطي الخاصة بك.

مراقبة حالة النسخ الاحتياطي

يمكنك مراقبة تقدم عمليات النسخ الاحتياطي الخاصة بك من خلال التحقق من ملف سجل MongoDB:

tail -f /var/log/mongodb/mongod.log

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

ترقية MongoDB

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

التحقق من الإصدار الحالي

قبل الترقية، من المهم معرفة الإصدار الحالي من MongoDB الذي تعمل به. يمكنك التحقق من ذلك عن طريق تشغيل:

mongod --version

خطوات ترقية MongoDB

  1. تحديث قائمة الحزم: أولاً، قم بتحديث قائمة حزم نظامك للتأكد من أن لديك أحدث المعلومات حول الحزم المتاحة:

    sudo apt update
    
  2. نسخ احتياطي لبياناتك: قبل إجراء أي ترقية، من الضروري نسخ بياناتك احتياطيًا. راجع القسم السابق حول النسخ الاحتياطي للحصول على تعليمات مفصلة.

  3. إيقاف خدمة MongoDB:

    sudo systemctl stop mongod
    
  4. تحديث حزم MongoDB:

    sudo apt upgrade mongodb-org
    

    سيقوم هذا الأمر بترقية MongoDB إلى أحدث إصدار في المستودع الذي قمت بإضافته.

  5. بدء خدمة MongoDB:

    sudo systemctl start mongod
    
  6. التحقق من الإصدار الجديد: بعد الترقية، تحقق من أن الإصدار الجديد تم تثبيته بشكل صحيح:

    mongod --version
    

الترقية إلى إصدار محدد

إذا كنت ترغب في الترقية إلى إصدار محدد من MongoDB بدلاً من أحدث إصدار، يمكنك تحديد رقم الإصدار:

sudo apt install mongodb-org=X.Y.Z mongodb-org-server=X.Y.Z mongodb-org-shell=X.Y.Z mongodb-org-mongos=X.Y.Z mongodb-org-tools=X.Y.Z

استبدل X.Y.Z برقم الإصدار الذي ترغب في تثبيته.

التعامل مع ترقيات الإصدارات الرئيسية

عند الترقية بين الإصدارات الرئيسية (مثل من 4.x إلى 5.x)، قد تكون هناك خطوات أو اعتبارات إضافية:

  1. تحقق من التوافق: تأكد من أن إصدار MongoDB الحالي الخاص بك يمكن ترقيته مباشرة إلى الإصدار المستهدف. قد تتطلب بعض الترقيات خطوات وسيطة.

  2. راجع ملاحظات الإصدار: اقرأ دائمًا ملاحظات الإصدار للإصدار الجديد لفهم أي تغييرات قد تؤدي إلى كسر التوافق أو الميزات الجديدة.

  3. تحديث السائقين والعملاء: تأكد من أن جميع التطبيقات والسائقين المتصلين بـ MongoDB متوافقة مع الإصدار الجديد.

  4. اختبار في بيئة غير إنتاجية: اختبر دائمًا عملية الترقية في بيئة اختبارية قبل تطبيقها على الإنتاج.

خطوات ما بعد الترقية

بعد الترقية:

  1. تحقق من السجلات لأي أخطاء:

    sudo tail -f /var/log/mongodb/mongod.log
    
  2. قم بتشغيل فحوصات سلامة قاعدة البيانات: اتصل بواجهة MongoDB وقم بتشغيل:

    db.runCommand( { dbCheck: 1 } )
    

    لكل من قواعد بياناتك.

  3. تحديث MongoDB Compass أو أدوات GUI الأخرى إذا كنت تستخدمها.

  4. راجع وقم بتحديث استراتيجية النسخ الاحتياطي الخاصة بك إذا لزم الأمر، حيث قد تقدم الإصدارات الأحدث طرق نسخ احتياطي محسنة.

التراجع عن الترقية

إذا واجهت مشكلات بعد الترقية، قد تحتاج إلى التراجع. يجب أن يتم التراجع بحذر:

  1. أوقف خدمة MongoDB.
  2. قم بإزالة الحزم الجديدة.
  3. قم بتثبيت الحزم السابقة.
  4. استعد من النسخة الاحتياطية التي تم أخذها قبل الترقية.

تذكر، قد لا يكون التراجع دائمًا بسيطًا، خاصةً بين الإصدارات الرئيسية، بسبب التغييرات المحتملة في تنسيق البيانات.

استكشاف المشكلات الشائعة

حتى مع الإعداد والصيانة بعناية، قد تواجه مشكلات مع تثبيت MongoDB الخاص بك. يغطي هذا القسم بعض المشكلات الشائعة وحلولها.

مشاكل الأذونات

  1. المشكلة: أخطاء "إذن مرفوض" عند محاولة الوصول إلى MongoDB.

    الحل:

    • تأكد من أن دليل بيانات MongoDB لديه الملكية الصحيحة:
      sudo chown -R mongodb:mongodb /var/lib/mongodb
      
    • تحقق من أذونات ملف سجل MongoDB:
      sudo chown mongodb:mongodb /var/log/mongodb/mongod.log
      ```2. **المشكلة**: لا يمكن الوصول إلى MongoDB باستخدام مستخدم Ubuntu الخاص بك.
      

    الحل:

    • أضف مستخدمك إلى مجموعة MongoDB:
      sudo usermod -aG mongodb $USER
      
    • قم بتسجيل الخروج ثم تسجيل الدخول مرة أخرى لتفعيل التغييرات.

مشاكل الاتصال

  1. المشكلة: خطأ "تم رفض الاتصال".

    الحل:

    • تحقق مما إذا كان MongoDB يعمل:
      sudo systemctl status mongod
      
    • إذا لم يكن يعمل، ابدأه:
      sudo systemctl start mongod
      
    • تأكد من أن MongoDB يستمع على العنوان الصحيح في mongod.conf:
      net:
        port: 27017
        bindIp: 127.0.0.1
      
  2. المشكلة: لا يمكن الاتصال عن بُعد.

    الحل:

    • تحقق مما إذا كان MongoDB مرتبطًا بجميع الواجهات (0.0.0.0) في mongod.conf.
    • تأكد من أن جدار الحماية الخاص بك يسمح بالاتصالات على المنفذ 27017.
    • تحقق من أن المصادقة تم إعدادها بشكل صحيح إذا كنت تستخدمها.

مشاكل الأداء

  1. المشكلة: استعلامات بطيئة أو أداء عام ضعيف.

    الحل:

    • استخدم طريقة explain() لتحليل أداء الاستعلام:
      db.collection.find(<query>).explain("executionStats")
      
    • تأكد من وجود فهرسة صحيحة:
      db.collection.createIndex({ field: 1 })
      
    • تحقق من موارد النظام (CPU، RAM، Disk I/O) للزجاجات.
  2. المشكلة: استخدام عالي للذاكرة.

    الحل:

    • قم بضبط حجم ذاكرة التخزين المؤقت WiredTiger في mongod.conf:
      storage:
        wiredTiger:
          engineConfig:
            cacheSizeGB: 1
      
    • قم بتحسين استعلاماتك لتقليل استخدام الذاكرة.

تلف قاعدة البيانات

  1. المشكلة: ملفات قاعدة البيانات تالفة.

    الحل:

    • أوقف MongoDB:
      sudo systemctl stop mongod
      
    • قم بإصلاح قاعدة البيانات:
      mongod --repair --dbpath /var/lib/mongodb
      
    • إذا فشلت عملية الإصلاح، استعد من نسخة احتياطية حديثة.

تحليل سجل الملفات

يمكن أن توفر سجلات MongoDB معلومات قيمة لاستكشاف الأخطاء وإصلاحها:

  1. عرض آخر 100 سطر من ملف السجل:

    sudo tail -n 100 /var/log/mongodb/mongod.log
    
  2. البحث عن رسائل الخطأ:

    sudo grep "ERROR" /var/log/mongodb/mongod.log
    

رسائل الخطأ الشائعة

  1. "العملية غير مسموح بها": غالبًا ما تتعلق بـ SELinux أو AppArmor. تحقق من حالتها وقم بتكوينها للسماح بعمليات MongoDB.

  2. "لا يوجد مساحة متبقية على الجهاز": تحقق من مساحة القرص لديك وحرر المساحة إذا لزم الأمر.

  3. "عدد الملفات المفتوحة كثير جدًا": زيادة حد الملفات المفتوحة في النظام:

    sudo ulimit -n 64000
    

طلب المساعدة الإضافية

إذا كنت غير قادر على حل مشكلة:

  1. تحقق من الوثائق الرسمية لـ MongoDB.
  2. ابحث في منتديات مجتمع MongoDB.
  3. راجع JIRA الخاص بـ MongoDB للمشاكل المعروفة.
  4. اعتبر التواصل مع دعم MongoDB إذا كان لديك ترخيص تجاري.

أفضل الممارسات واعتبارات الأمان

تطبيق أفضل الممارسات وإعطاء الأولوية للأمان أمران حاسمان للحفاظ على تثبيت MongoDB قوي وآمن. ستتناول هذه القسم التوصيات الرئيسية لتحسين نشر MongoDB الخاص بك.

توصيات الأمان

  1. تفعيل المصادقة:

    • استخدم دائمًا المصادقة في بيئات الإنتاج.
    • أنشئ حسابات مستخدمين فردية مع أدوار وامتيازات محددة.
    use admin
    db.createUser(
      {
        user: "adminUser",
        pwd: "securePassword",
        roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
      }
    )
    
  2. تفعيل التحكم في الوصول:

    • قم بتعيين authorization: enabled في ملف mongod.conf الخاص بك.
  3. استخدام TLS/SSL للتشفير:

    • قم بتكوين MongoDB لاستخدام TLS/SSL لجميع الاتصالات الشبكية.
    • في mongod.conf:
      net:
        ssl:
          mode: requireSSL
          PEMKeyFile: /path/to/mongodb.pem
      
  4. تنفيذ أمان الشبكة:

    • استخدم جدران الحماية لتقييد الوصول إلى منافذ MongoDB.
    • اعتبر استخدام VPN للوصول عن بُعد.
  5. تدقيقات أمان منتظمة:

    • راجع حسابات المستخدمين وامتيازاتهم بشكل دوري.
    • استخدم قائمة التحقق الأمنية المدمجة في MongoDB:
      db.adminCommand( { getCmdLineOpts: 1 } )
      
  6. ابقِ MongoDB محدثًا:

    • قم بتحديثه بانتظام إلى أحدث إصدار مستقر للاستفادة من تصحيحات الأمان.

نصائح تحسين الأداء

  1. الفهرسة الصحيحة:

    • أنشئ فهارس لدعم استعلاماتك:
      db.collection.createIndex({ field: 1 })
      
    • استخدم طريقة explain() لتحليل أداء الاستعلام.
  2. استخدام اهتمام الكتابة المناسب:

    • التوازن بين أمان البيانات والأداء:
      db.collection.insertOne({ ... }, { writeConcern: { w: 1, j: true } })
      
  3. تحسين تصميم المخطط:

    • صمم مخططك لدعم استعلاماتك الأكثر تكرارًا.
    • اعتبر تضمين البيانات ذات الصلة للمعلومات التي يتم الوصول إليها بشكل متكرر.
  4. مراقبة وضبط موارد النظام:

    • تأكد من وجود ذاكرة RAM كافية لمجموعة العمل الخاصة بك.
    • استخدم تخزين SSD لتحسين أداء I/O.
  5. استخدام التجميع للاستعلامات المعقدة:

    • استفد من خط أنابيب التجميع لمعالجة البيانات بكفاءة:
      db.collection.aggregate([
        { $match: { ... } },
        { $group: { ... } },
        { $sort: { ... } }
      ])
      

النسخ الاحتياطي واستعادة الكوارث

  1. نسخ احتياطية منتظمة:

    • نفذ نسخ احتياطية تلقائية ومنتظمة.
    • اختبر عملية الاستعادة الخاصة بك بشكل دوري.
  2. تنفيذ النسخ المتماثل:

    • استخدم مجموعات النسخ المتماثل لتوفير توافر عالي وازدواجية البيانات.
  3. خطة استعادة الكوارث:

    • قم بتطوير وتوثيق خطة لاستعادة الكوارث.
    • تدرب بانتظام على سيناريوهات الاستعادة.

المراقبة والتسجيل

  1. إعداد المراقبة:

    • استخدم MongoDB Cloud Manager أو أدوات مراقبة أخرى.
    • راقب المقاييس الرئيسية مثل العمليات/الثانية، الاتصالات، واستخدام الذاكرة.
  2. تكوين تسجيل مناسب:

    • قم بتمكين التسجيل للاستعلامات البطيئة:
      operationProfiling:
        slowOpThresholdMs: 100
        mode: slowOp
      
  3. تدوير السجلات:

    • نفذ تدوير السجلات لإدارة أحجام ملفات السجل.

أفضل ممارسات التطوير

  1. استخدام تجميع الاتصالات:

    • نفذ تجميع الاتصالات في تطبيقك لإدارة اتصالات قاعدة البيانات بكفاءة.
  2. تنفيذ معالجة الأخطاء بشكل صحيح:

    • تعامل مع أخطاء قاعدة البيانات بشكل سلس في كود تطبيقك.
  3. استخدام أنواع البيانات المناسبة:

    • اختر أنواع BSON الصحيحة لبياناتك لتحسين التخزين وأداء الاستعلام.
  4. التحقق من المدخلات:

    • نفذ التحقق من المدخلات لمنع هجمات الحقن وتلف البيانات.

الصيانة المنتظمة

  1. ضغط قواعد البيانات:

    • قم بضغط قواعد البيانات بانتظام لاستعادة مساحة القرص:
      db.runCommand( { compact: 'collection_name' } )
      
  2. التحقق من سلامة قاعدة البيانات:

    • قم بتشغيل فحوصات السلامة بشكل دوري:
      db.runCommand( { dbCheck: 1 } )
      

تثبيت MongoDB على Ubuntu

الأسئلة الشائعة (FAQ)

إليك بعض الأسئلة الشائعة حول تثبيت واستخدام MongoDB على Ubuntu:

س: كيف يمكنني معرفة أي إصدار من MongoDB أستخدمه؟

ج: يمكنك استخدام الأمر التالي في الطرفية:

mongod --version

أو، إذا كنت بالفعل في واجهة MongoDB:

db.version()

س: هل يمكنني تثبيت إصدارات متعددة من MongoDB على نفس نظام Ubuntu؟

ج: بينما من الممكن، إلا أنه عمومًا لا يُوصى بذلك لأنه قد يؤدي إلى تعارضات. إذا كنت بحاجة إلى تشغيل إصدارات متعددة، اعتبر استخدام حاويات Docker للعزل.

س: كيف يمكنني تغيير كلمة مرور مستخدم MongoDB؟

ج: يمكنك تغيير كلمة المرور باستخدام الأمر التالي في واجهة MongoDB:

db.changeUserPassword("username", "newPassword")

س: كيف يمكنني تمكين الوصول عن بُعد إلى خادم MongoDB الخاص بي؟

ج: تحتاج إلى تعديل bindIp في ملف mongod.conf الخاص بك إلى 0.0.0.0، تأكد من أن جدار الحماية الخاص بك يسمح بالاتصالات على المنفذ 27017، وأعد تشغيل MongoDB. ومع ذلك، تأكد من تنفيذ تدابير الأمان المناسبة قبل القيام بذلك.

س: ما الفرق بين إصدارات MongoDB Community وEnterprise؟

ج: MongoDB Community مجاني ومفتوح المصدر، بينما يوفر Enterprise ميزات إضافية مثل مصادقة LDAP، والتدقيق، ومحركات التخزين المشفرة. بالنسبة لمعظم المستخدمين، فإن إصدار Community كافٍ.

س: كيف يمكنني عمل نسخة احتياطية من قاعدة بيانات MongoDB الخاصة بي؟

ج: يمكنك استخدام أداة mongodump لإنشاء تصدير ثنائي لقاعدة بياناتك:

mongodump --out /path/to/backup/directory

س: كيف يمكنني تحسين أداء MongoDB؟

ج: بعض الطرق لتحسين الأداء تشمل:

  • الفهرسة الصحيحة
  • استخدام اهتمامات كتابة مناسبة
  • تحسين تصميم المخطط
  • ضمان موارد النظام الكافية (خاصة RAM)
  • الصيانة المنتظمة (مثل تشغيل عمليات الضغط والإصلاح)

س: ماذا يجب أن أفعل إذا لم يبدأ MongoDB؟

ج: تحقق من ملف سجل MongoDB (عادةً في /var/log/mongodb/mongod.log) للرسائل الخطأ. تشمل المشكلات الشائعة مشاكل الأذونات، تعارضات المنافذ، أو ملفات البيانات التالفة.

س: كيف يمكنني الاتصال بـ MongoDB من لغة برمجة؟

ج: تحتوي معظم لغات البرمجة على برامج تشغيل MongoDB مدعومة رسميًا أو من قبل المجتمع. على سبيل المثال، في Python، ستستخدم pymongo:

from pymongo import MongoClient
client = MongoClient('mongodb://localhost:27017/')

س: هل من الآمن استخدام MongoDB بدون مصادقة في بيئة التطوير؟

ج: بينما من الممكن، يُوصى عمومًا دائمًا باستخدام المصادقة، حتى في بيئات التطوير. يساعد ذلك في ضمان توافق ممارسات التطوير الخاصة بك مع متطلبات أمان الإنتاج.

س: كم مرة يجب أن أعمل نسخ احتياطية من قواعد بيانات MongoDB الخاصة بي؟

ج: تعتمد تكرارية النسخ الاحتياطية على حالتك الخاصة ومدى تغير بياناتك. بالنسبة للتطبيقات الحرجة، اعتبر النسخ الاحتياطية المستمرة أو على الأقل النسخ الاحتياطية اليومية.

س: هل يمكنني تغيير المنفذ الافتراضي (27017) الذي يستخدمه MongoDB؟

ج: نعم، يمكنك تغيير المنفذ الافتراضي في ملف mongod.conf:

net:
  port: 27018

تذكر إعادة تشغيل MongoDB بعد إجراء هذا التغيير.