इस तरह की समस्या को देखना आम बात नहीं है, लेकिन मैंने इसे छिटपुट रूप से होते देखा है।
यहां करने के लिए सबसे अच्छा उपचारात्मक कार्रवाई संदर्भित टू शार्ड के प्राथमिक को नीचे ले जाना है जो पृष्ठभूमि को हटा देगा। हटाए गए धागे केवल वर्तमान प्राथमिक पर मौजूद हैं (उन्हें उस प्राथमिक से oplog
के माध्यम से दोहराया जाएगा जैसा कि उन्हें संसाधित किया जाता है)। जब आप इसे नीचे ले जाते हैं, तो यह एक माध्यमिक बन जाता है, धागे अब नहीं लिख सकते हैं और आपको एक नया प्राथमिक मिलता है जिसमें कोई लंबित डिलीट नहीं होता है। आप पुराने कर्सर को हटाने के लिए स्टेप डाउन के बाद पूर्व प्राथमिक को फिर से शुरू करना चाह सकते हैं, लेकिन यह आमतौर पर जरूरी नहीं है।
एक बार जब आप ऐसा कर लेते हैं, तो आपके पास बड़ी संख्या में अनाथ दस्तावेज़ रह जाएंगे, जो cleanUpOrphaned
आदेश
जिसे मैं कम ट्रैफ़िक समय पर चलाने की सलाह दूंगा (यदि आपके पास ऐसा समय है)।
संदर्भ के लिए, यदि यह एक आवर्ती समस्या है, तो यह संभव है कि प्राथमिक लोड के मामले में थोड़ा संघर्ष कर रहे हों, और हटाए जाने की कतार से बचने के लिए आप _waitForDelete
विकल्प
बैलेंसर के लिए सही (डिफ़ॉल्ट रूप से गलत) निम्नानुसार है:
use config
db.settings.update(
{ "_id" : "balancer" },
{ $set : { "_waitForDelete" : true } },
{ upsert : true }
)
इसका मतलब यह होगा कि प्रत्येक माइग्रेशन धीमा है (शायद काफी हद तक) लेकिन इससे बैकग्राउंड डिलीट जमा नहीं होगा।