المحتويات

المقدمة

المتطلبات الأساسية

المتطلبات

المكونات المستخدمة

مراجعة بيانات السجل

إصلاح قاعدة البيانات إذا لم تبدأ

المقدمة

يوضح هذا المستند كيفية إصلاح MongoDB على جهاز Secure Network Analytics (المعروف سابقا باسم Stealthwatch) Manager بعد إيقاف تشغيل غير صالح.

المتطلبات الأساسية

المتطلبات

لا توجد متطلبات خاصة لهذا المستند.

المكونات المستخدمة

لا يقتصر هذا المستند على إصدارات برامج ومكونات مادية معينة.

تم إنشاء المعلومات الواردة في هذا المستند من الأجهزة الموجودة في بيئة معملية خاصة. بدأت جميع الأجهزة المُستخدمة في هذا المستند بتكوين ممسوح (افتراضي). إذا كانت شبكتك مباشرة، فتأكد من فهمك للتأثير المحتمل لأي أمر.

مراجعة بيانات السجل

أستخدم الأمر أقل لمراجعة ملف mongodb.log.

732smc:~# less /lancope/var/mongodb/log/mongodb.log

2021-06-21T14:54:43.029+0000 I CONTROL ***** SERVER RESTARTED *****

2021-06-21T14:54:43.033+0000 I CONTROL [initandlisten] MongoDB starting : pid=87057 port=27017 dbpath=/lancope/var/database/dbs/mdb/ 64-bit host=ussecrapstwsmc1

2021-06-21T14:54:43.033+0000 I CONTROL [initandlisten] db version v3.0.15

2021-06-21T14:54:43.033+0000 I CONTROL [initandlisten] git version: b8ff507269c382bc100fc52f75f48d54cd42ec3b

2021-06-21T14:54:43.033+0000 I CONTROL [initandlisten] build info: Linux 3555b2234f08 4.9.0-2-amd64 #1 SMP Debian 4.9.13-1 (2017-02-27) x86_64 BOOST_LIB_VERSION=1_49

2021-06-21T14:54:43.033+0000 I CONTROL [initandlisten] allocator: tcmalloc

2021-06-21T14:54:43.033+0000 I CONTROL [initandlisten] options: { config: "/etc/mongodb/mongodb.conf", net: { port: 27017 }, processManagement: { fork: true }, storage: { dbPath: "/lancope/var/database/dbs/mdb/" }, systemLog: { destination: "file", logAppend: true, path: "/lancope/var/mongodb/log/mongodb.log" } }

2021-06-21T14:54:43.050+0000 W - [initandlisten] Detected unclean shutdown - /lancope/var/database/dbs/mdb/mongod.lock is not empty.

2021-06-21T14:54:43.063+0000 I STORAGE [initandlisten] **************

old lock file: /lancope/var/database/dbs/mdb/mongod.lock. probably means unclean shutdown,

but there are no journal files to recover.

this is likely human error or filesystem corruption.

please make sure that your journal directory is mounted.

found 2 dbs.

see: http://dochub.mongodb.org/core/repair for more information

*************

2021-06-21T14:54:43.063+0000 I STORAGE [initandlisten] exception in initAndListen: 12596 old lock file, terminating

2021-06-21T14:54:43.063+0000 I CONTROL [initandlisten] dbexit: rc: 100

إصلاح قاعدة البيانات إذا لم تبدأ

الخطوة 1. التحقق من حالة مونغو

للتحقق من حالة lc-mongodb.service، قم بإصدار الأمر systemCTL نشط lc-mongodb.

إذا كان مونجو في حالة نشطة، فإن النتائج سوف تتشابه:

732smc:/# systemctl is-active lc-mongodb

active

732smc:/#

وإذا لم يكن مونجو في حالة نشطة، فإن النتائج سوف تتشابه:

732smc:/# systemctl is-active lc-mongodb

inactive

732smc:/#

الخطوة 2. أوقفوا خدمة مونغو

إذا تم العثور على خدمة LC-MONGODB في حالة نشطة، فقم بإيقاف الخدمة باستخدام الأمر /bin/systemCTL stop lc-mongodb.service.

732smc:/# /bin/systemctl stop lc-mongodb.service

732smc:/# /bin/systemctl status lc-mongodb.service | grep Active

Active: inactive (dead) since Thu 2022-04-07 12:33:49 UTC; 1s ago7

انتظر بضع دقائق وتأكد من أن المونجو لا يزال في حالة توقف. أستخدم الأمر /bin/systemCTL status lc-mongodb.service حسب الحاجة لضمان أن الخدمة في حالة غير نشطة.

الخطوة 3. معرف عملية التجميع (PID)

تحقق لمعرفة ما إذا كان ملف التأمين لا يزال يحتوي على PID. قم بإصدار الأمر cat /lancope/var/database/dbs/mdb/mongod.lock.

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

ملاحظة: لاحظ معرف العملية إذا تم إرجاع واحد، كما هو مستخدم في الخطوة 4

732smc:/# cat /lancope/var/database/dbs/mdb/mongod.lock

14259

732smc:/#

يوضح هذا الإخراج أن ملف التأمين لا يحتوي على معرف PID. يجب أن يكون هذا الملف فارغا إذا لم تكن العملية في حالة نشطة. إذا لم يكن هناك PID استمر في الخطوة 7.

732smc:/# cat /lancope/var/database/dbs/mdb/mongod.lock

732smc:/#

الخطوة 4. التحقق من حالة PID

إذا كان الملف MONGOD.Lock المحدد في الخطوة 3 يحتوي على PID، فقم بتشغيل صمام PS | grep [1] 4259 أمر (قم بتغيير [1]4259 مع PID الخاص بك من الخطوة 3) للتحقق من وجود PID ثم قم بعد ذلك بقتل PID إذا تم العثور عليه.

ملاحظة: تعبير القوس غير مطلوب ولكنه ينتج عنه إستبعاد الأمر "grep" في الإخراج.

732smc:/# ps faux | grep [1]4259

mongodb 14259 0.3 0.4 516180 71520 ? Sl 12:38 0:03 /lancope/mongodb/bin/mongod --fork --config /etc/mongodb/mongodb.conf

732smc:/# kill -9 14259

732smc:/#

الخطوة 5. مسح محتويات ملف التأمين

امسح محتوى ملف القفل باستخدام الأمر > /lancope/var/database/dbs/mdb/mongod.lock. تحقق من أن الملف فارغ الآن باستخدام الأمر cat /lancope/var/database/dbs/mdb/mongo.lock.

732smc:/# > /lancope/var/database/dbs/mdb/mongod.lock

732smc:/# cat /lancope/var/database/dbs/mdb/mongod.lock

732smc:/#

الخطوة 6. محاولة بدء تشغيل MongoDB

حاول بدء خدمة LC-MONGODB باستخدام الأمر /bin/systemCTL start lc-mongodb.service. بمجرد إرجاع المطالبة الخاصة بك، تحقق من حالة العملية باستخدام حالة/bin/systemCTL lc-mongodb.service | GREP نشط أمر.

732smc:/# /bin/systemctl start lc-mongodb.service

732smc:/# /bin/systemctl status lc-mongodb.service | grep Active

Active: active (running) since Thu 2022-04-07 12:38:37 UTC; 27s ago

732smc:/#

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

الخطوة 7. بدء الإصلاح

قم بإصدار الأمر -u mongodb /lancope/mongodb/bin/mongod —dbpath /lancope/var/database/dbs/mdb — أمر الإصلاح

732smc:/# sudo -u mongodb /lancope/mongodb/bin/mongod --dbpath /lancope/var/database/dbs/mdb/ --repair

732smc:/#

الخطوة 8. محاولة بدء تشغيل MongoDB الذي تم إصلاحه

قم بتشغيل الأمر /bin/systemCTL start lc-mongodb.service لبدء تشغيل الخدمة.  يجب أن تظل العملية في حالة نشطة ويمكن فحصها باستخدام الأمر /bin/systemctl status lc-mongodb.service.

732smc:/# /bin/systemctl start lc-mongodb.service

732smc:/# /bin/systemctl status lc-mongodb.service | grep Active

Active: active (running) since Thu 2022-04-07 12:38:37 UTC; 27s ago