2012-05-23 7 views
6

मैं किसी अन्य सर्वर से डेटाबेस को डंप करने की कोशिश कर रहा हूं (यह ठीक काम करता है), फिर उसे एक नए सर्वर पर पुनर्स्थापित करें (यह ठीक काम नहीं करता है)।मोंगोडम्प और मोंगोरस्टोर; फ़ील्ड नहीं मिला

मैं पहली बार चलाएँ:

mongodump --host -d 

यह एक फ़ोल्डर dump/db जो bson दस्तावेजों के सभी शामिल हैं पैदा करता है।

डंप फ़ोल्डर में

फिर, मैं चल रहा हूँ:

mongorestore -d dbname db 

यह काम करता है और फ़ाइलों के माध्यम से दोहराता है, लेकिन यह कैसे हल करने के लिए मैं पर dbname.system.users

Wed May 23 02:08:05 { key: { _id: 1 }, ns: "dbname.system.users", name: "_id_" } 
Error creating index dbname.system.usersassertion: 13111 field not found, expected type 16 

कोई भी विचार यह त्रुटि प्राप्त ?

उत्तर

7

कोई भी मौका स्रोत और गंतव्य अलग-अलग संस्करण हैं?

किसी भी मामले में, इसके आस-पास पहुंचने के लिए, लक्ष्य डीबी में -सी ध्वज का उपयोग करके संग्रह को व्यक्तिगत रूप से पुनर्स्थापित करें और उसके बाद इंडेक्स को बाद में बनाएं। सिस्टम संग्रह इंडेक्स के लिए उपयोग किया जाता है, इसलिए इसे फिर से बनाना आसान है - बाकी सब कुछ बहाल करने के बाद इसे आखिरी बार कोशिश करें, और यदि यह अभी भी विफल रहता है तो आप हमेशा प्रासंगिक इंडेक्स को फिर से बना सकते हैं।

+0

धन्यवाद! सही काम किया। – dzm

+0

हाँ, स्थानीय लोगों से मोंगोएचक्यू को 'मोंगोरस्टोर' करने की कोशिश करने में भी यही समस्या थी। 'Brew' के माध्यम से डाउनग्रेड किया गया स्थानीय और कोई और त्रुटि नहीं। –

+0

संस्करण के द्वारा आपका मतलब डेटाबेस संस्करण, या किसी प्रकार का स्कीमा संस्करण है? क्या 'mongorestore' का संस्करण स्थानीय रूप से चल रहा है, या केवल संस्करणों को सिंक्रनाइज़ करने की आवश्यकता है? –

9

यदि यह वास्तविक संस्करणों का वास्तविक है, तो --noIndexRestore विकल्प का उपयोग करें। और उसके बाद सभी इंडेक्स बनाएं।

+1

के 2.2 संस्करण का उपयोग कर रहे हैं तो मेरे लिए अच्छा काम करना (उदाहरण के लिए) टूल के 2.2 संस्करण के साथ डंपिंग और पुनर्स्थापित करना एक अच्छा विचार है। –

3

मुद्दा भी मोंगो के पुराने संस्करणों में इस बग की वजह से हो सकता है (मेरे मामले में यह 2.0.8 था):

https://jira.mongodb.org/browse/SERVER-7181

मूल रूप से, आप 13111 field not found, expected type 16 त्रुटि जब यह वास्तव में आप उत्साह किया जाना चाहिए मिल अपने प्रमाणीकरण विवरण दर्ज करने के लिए।

और मैं इसे कैसे तय की मिसाल:

[email protected]:/# mongorestore /backups/demand/ondemand.05-24-2013T114223/ 
connected to: 127.0.0.1 
[REDACTED] 
Fri May 24 11:48:15  going into namespace [test.system.indexes] 
Fri May 24 11:48:15 { key: { _id: 1 }, ns: "test.system.users", name: "_id_" } 
Error creating index test.system.usersassertion: 13111 field not found, expected type 16 
# Error when not giving username and password 

[email protected]:/# mongorestore -u fakeuser -p fakepassword /backups/demand/ondemand.05-24-2013T114223/ 
connected to: 127.0.0.1 
[REDACTED] 
Fri May 24 11:57:11 /backups/demand/ondemand.05-24-2013T114223/test/system.users.bson 
Fri May 24 11:57:11  going into namespace [test.system.users] 
1 objects found 
# Works fine when giving username and password! :) 

आशा है कि जो कोई मुद्दा पिछले 2 उत्तर द्वारा तय नहीं होती है मदद करता है!

0

यह भी हो सकता है यदि आप MongoDB 2.6+ में mongorestore करने की कोशिश कर रहे हैं और जिस डंप को आप पुनर्स्थापित करने का प्रयास कर रहे हैं, उसमें system.users तालिका व्यवस्थापक के अलावा किसी भी डेटाबेस में है। MongoDB 2.2 और 2.4 में system.users संग्रह किसी भी डेटाबेस में हो सकता है। MongoDB 2.6 से जुड़े ऑथ स्कीमा माइग्रेशन ने सभी उपयोगकर्ताओं को व्यवस्थापक डेटाबेस में system.users तालिका में स्थानांतरित कर दिया, लेकिन अन्य डेटाबेस में system.users तालिकाओं के पीछे छोड़ दिया (MongoDB 2.6 बस इन्हें अनदेखा करता है)। ऐसा लगता है कि MongoDB 2.6 में आयात करते समय यह दावा होता है।

संबंधित मुद्दे