Mongodump: अपरिचित क्षेत्र 'स्नैपशॉट'


33

मैं अपने सर्वर का बैकअप डाउनलोड करने के लिए mongo टूल्स से mongodump का उपयोग कर रहा हूं। हालाँकि जैसा कि मैं कमांड चलाता हूं, कमांड "अपरिचित क्षेत्र 'स्नैपशॉट' लौटाता है।

पूर्ण त्रुटि है:

Failed: error reading collection: Failed to parse: { find: "data", skip: 0, snapshot: true, $readPreference: { mode: "secondaryPreferred" }, $db: "xxx" }. Unrecognized field 'snapshot'.

मोंगोडम्प - प्रत्यावर्तन रिटर्न:

mongodump version: built-without-version-string
git version: built-without-git-spec
Go version: go1.7.3
   os: linux
   arch: amd64
   compiler: gc
OpenSSL version: OpenSSL 1.0.2g  1 Mar 2016

मुझे अपने संस्करण को डाउनग्रेड करने की आवश्यकता हो सकती है? अन्यथा यहां से जाने के लिए अनिश्चित ...


1
O / S और MongoDB सर्वर के आपके संस्करण क्या हैं? आपका mongodump --versionआउटपुट बताता है कि आपने स्रोत से उपकरण बनाए हैं, इसलिए यह स्पष्ट नहीं है कि MongoDB का कौन सा संस्करण हो सकता है। जहां संभव होगा मैं आधिकारिक बायनेरी डाउनलोड करने का सुझाव दूंगा।
Stennie

1
मुझे वही समस्या मिली, मुझे लगता है कि यह इसलिए है क्योंकि मैं एक मोंगोएक्सपोर्ट 4.0.4 का उपयोग करता हूं, जिसमें मोंगोबीडीबी सर्वर 4.0 है।
एंटोनी

जवाबों:


13

आपके पास निश्चित रूप से अपने मंगोलियाई सर्वर (3.6 बनाम 4.0) बनाम मोंगोडम्प के बीच संस्करण का अंतर है।

आप बचाव के लिए docker का उपयोग कर सकते हैं:

docker run --rm -v $(pwd):/workdir/ -w /workdir/ mongo:4.0 mongodump -h server -d $database --out /workdir/dump/

डॉकटर के साथ आप इसे स्थापित किए बिना टूल क्ली के सटीक संस्करण का उपयोग कर सकते हैं।

आप एक उपनाम (.bashrc) में भी निर्दिष्ट कर सकते हैं:

alias mongodump="docker run --rm -v $(pwd):/workdir/ -w /workdir/ mongo:4.0 mongodump"

नोट: जिस फ़ोल्डर में डंप सहेजा गया है, उसे लिखने की अनुमति देनी होगी ताकि कंटेनर में मोंगोडब यूजर माउंटेड वॉल्यूम को लिख सके। यह उपरोक्त कमांड को चलाने से पहले डंप फ़ोल्डर पर अनुमतियों को मैन्युअल रूप से सेट करके प्राप्त किया जा सकता है।

ऊपर के उदाहरण में यह होगा mkdir -m 777 dump:। डंप पूरा होने के बाद, अनुमतियाँ वापस एक सामान्य (यानी, sudo chmod 755 dump) में संशोधित की जा सकती हैं ।


1
मुझे त्रुटि मिलती रहती है Failed: error dumping metadata: error creating directory for metadata file dump/{COLLECTION}: mkdir dump: permission denied। मैंने कोशिश की -u 0और -o /tmp/dump, लेकिन यह काम करने के लिए नहीं मिल सका। मैंने अंत में एक कंटेनर शुरू किया, डंप को चलाया, फिर कंटेनर से इसे कॉपी किया। कोई भी विचार जहां मैं वन-लाइनर के साथ गलत हो गया?
थर्डेंडर

1
आपको उचित रूप से यूआईडी सेट करना होगा:docker run --rm -v $(pwd):/workdir/ -w /workdir/ -u $(id -u) mongo:4.0 mongodump ...
ltn100

55

जोड़ना --forceTableScan

उदाहरण:

mongodump --forceTableScan -d database_name -o target_directory

http://aug2uag.blogspot.com/2018/08/mongoexport-unrecognized-field-snapshot.html


इसने मेरे लिए काम किया। धन्यवाद
तरंग Bhalodia

क्या आप बता सकते हैं कि त्रुटि क्या है, और यह तर्क इतनी मदद क्यों करता है?
F3L1X79
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.