English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

نسخ MongoDB (مجموعة التكرار)

عملية نسخ البيانات بين عدة خوادم هي MongoDB Replication.

يقدم التكرار نسخة احتياطية إضافية للبيانات ويخزن نسخة من البيانات على عدة سرvers، مما يزيد من قابلية البيانات للتشغيل. ويمكن أيضًا ضمان أمان البيانات.

يُسمح للتكريار أيضًا بالاستعادة من الفشل في الأجهزة وتقاطع الخدمات.

ما هو التكرار?

  • ضمان أمان البيانات
  • الاستقرار العالي للبيانات (24*7)
  • استعادة الكارثة
  • لا تحتاج إلى إيقاف التشغيل للحفاظ على البيانات (مثل النسخ الاحتياطي، إعادة بناء الفهرس، الضغط)
  • قراءة البيانات الموزعة

مبدأ التكرار في MongoDB

يحتاج التكرار في mongodb إلى عقدين على الأقل. واحد منها هو العقد الرئيسي، وهو مسؤول عن معالجة طلبات العملاء، والآخرون هم العقد الفرعية، وهي مسؤولة عن نسخ بيانات العقد الرئيسي.

طريقة التكامل الشائعة بين العقد في mongodb هي: واحد رئيسي وواحد فرعي، أو واحد رئيسي والعديد من الفرعيات.

يُسجل العقد الرئيسي في oplog الذي يتم تنفيذه عليه، ويقوم العقد الفرعي بمراقبة العقد الرئيسي بانتظام للحصول على هذه العمليات، ثم يطبق هذه العمليات على نسخة البيانات الخاصة به، مما يضمن أن تكون بيانات العقد الفرعي متزامنة مع العقد الرئيسي.

هيكل تكرار MongoDB كما يلي:

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

خصائص مجموعة التكرار هي:

  • مجموعة من N العقد
  • يمكن لأي عقد أن يكون العقد الرئيسي
  • كل عمليات الكتابة تكون على العقد الرئيسي
  • الانتقال التلقائي من الفشل
  • الإصلاح التلقائي

إعداد مجموعة التكرار لـ MongoDB

في هذا الدرس، نستخدم نفس MongoDB لتحقيق تجربة MongoDB الرئيسي والمتعدد من النوع الثانوي إليك الخطوات التالية:

1. أغلق خادم MongoDB الذي يعمل حاليًا.

الآن نبدأ mongoDB باستخدام خيار --replSet. نموذج الجملة الأساسي لـ --replSet هو كما يلي:

mongod --port "PORT" --dbpath "YOUR_DB_DATA_PATH" --replSet "REPLICA_SET_INSTANCE_NAME"

مثال على الاستخدام

mongod --port 27017 --dbpath "D:\set up\mongodb\data" --replSet rs0

في هذا المثال، سيتم بدء نموذج MongoDB rs0، وهو يستخدم منفذ 27017

بعد بدءها، افتح نافذة السطر وأرتبط بخدمة mongoDB

استخدم أمر rs.initiate() في محطة mongo لبدء مجموعة تكرار جديدة

يمكننا استخدام rs.conf() للتحقق من تكوين مجموعة التكرار

للتحقق من حالة مجموعة التكرار استخدم أمر rs.status()

إضافة أعضاء مجموعة التكرار

لإضافة أعضاء مجموعة التكرار، يجب استخدام عدة سرvers لبدء خدمة mongo. أدخل محطة mongo، واستخدم طريقة rs.add() لإضافة أعضاء مجموعة التكرار.

النحو

نموذج الأوامر الأساسي لأمر rs.add() هو كما يلي:
>rs.add(HOST_NAME:PORT)

مثال على الاستخدام

افترض أنك قد قمت ببدء خدمة MongoDB تُدعى mongod1.net، وبتوصيل 27017. استخدم الأمر rs.add() في نافذة الأوامر على العميل لتضيفها إلى مجموعة النسخ، والأمر كما يلي:

>rs.add("mongod1.net:27017")
>

يمكنك فقط إضافة خدمة MongoDB إلى مجموعة النسخ من خلال المزود الرئيسي، يمكنك استخدام الأمر db.isMaster() لتحديد ما إذا كان خدمة MongoDB التي تعمل حاليًا مزود رئيسيًا.

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