Mongoexport या mongodump के साथ बैकअप?


9

उत्पादन बैकअप के लिए, MongoDB सिफारिश की गई है mongodump बजाय mongoexport डेटा की सटीकता के लिए। फिर भी, मुझे इसे वापस करने से पहले एक MongoDB डेटाबेस से डेटा को "साफ़" करने की आवश्यकता होगी। मुझे mongoexport के अलावा किसी भी सर्वर-साइड डेटा स्क्रबिंग विकल्पों की जानकारी नहीं है । दो सवाल:

  1. क्या mongoexport RAM में MongoDB कैश का उपयोग करता है ? क्या यह रैम में काम करने वाले सेट को बदल देगा जैसे कि मोंगोडंप करता है?
  2. mongodump कमांड में यह --query विकल्प है। "एक JSON दस्तावेज़ को एक क्वेरी के रूप में प्रदान करता है जो मोंगोडम्प के आउटपुट में शामिल दस्तावेजों को वैकल्पिक रूप से सीमित करता है।" क्या यह किसी दस्तावेज़ में कुछ फ़ील्ड को बाहर करने के लिए एक क्वेरी लेता है?

1
ऐसा लगता है कि आप एक बैकअप के बजाय एक निर्यात की तलाश कर रहे हैं। यदि आप केवल खेतों का एक सबसेट निर्यात करते हैं, तो संभवत: आप उसे पुनर्स्थापित नहीं कर पाएंगे और पूरी तरह से काम करने योग्य डेटाबेस होगा। विचार करने के लिए कुछ अन्य विकल्प हैं: संवेदनशील डेटा (एप्लिकेशन कोड के माध्यम से) के साथ किसी भी फ़ील्ड को एन्क्रिप्ट करें ताकि आप एक सामान्य mongodumpया फाइल सिस्टम स्नैपशॉट बैकअप कर सकें , या यदि mongoexportआपको आवश्यक नहीं है तो एक कस्टम निर्यात लिखें । mongodअगर आपका डेटा निर्यात करने के लिए उपलब्ध रैम से बड़ा है तो कोई भी टूल या प्रोग्राम आपके काम करने के सेट को बदल सकता है। फाइलसिस्टम स्नैपशॉट कम विघटनकारी हैं
स्टेनी जू

स्पष्टीकरण के लिए धन्यवाद। खेतों पर एन्क्रिप्शन कुछ ऐसा है जिसके बारे में मैंने नहीं सोचा है, अच्छा सुझाव है।
हावर्ड ली

जवाबों:


6

आपके पहले प्रश्न के उत्तर के रूप में, दोनों टूल (डिफ़ॉल्ट रूप से) _idडेटा को लाने के लिए इंडेक्स को चलाएंगे और फिर इसे डिस्क पर लिखेंगे। तो, हाँ, दोनों उपकरण समान रूप से आपके काम करने वाले सेट को प्रभावित करेंगे, यही वजह है कि मैं आमतौर पर उन्हें एक माध्यमिक (संभवत: यदि संभव हो तो एक छिपे हुए माध्यमिक) के खिलाफ चलाने की सलाह देगा। यदि आप बड़ी मात्रा में डेटा के साथ काम कर रहे हैं, तो मैं यहां टिप्पणियों में स्टेनी की प्रतिध्वनि करूंगा और अन्य बैकअप विधियों की सिफारिश करूंगा।

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


6
  1. (क्षमा करें, पता नहीं)

  2. --query पूरे दस्तावेजों का चयन करेगा या बाहर करेगा, न कि फ़ील्ड।

हालांकि यह एक अच्छा विचार होगा:

--query '{datetime:{$gt:ISODate("2014-01-01T00:00:00.000Z")}},{_id:0,name:1,address:1,interests:1}'* )
  1. मोंगोडम्प बॉन फ़ाइल संरचना का उपयोग करता है और डेटा प्रकारों को संरक्षित करता हैMongoexport मूल्यों के डेटा प्रकार को खो देगा । जैसे कि नंबरलॉन्ग ("1431677405876") को सिर्फ 1431677405876 में परिवर्तित किया जाएगा। इसीलिए अगर आपको MongoDB पर वापस आयात करने की आवश्यकता है तो मोंगोडम्प की सलाह दी जाती है।

--Query पर आपके स्पष्टीकरण के लिए धन्यवाद, और mongoexport हानि डेटा प्रकार पर उदाहरण।
हावर्ड ली

0

Mongoexport वास्तव में प्रकारों को संरक्षित करता है लेकिन यह डेटा को असंगत बनाता है। यदि आप Ints और Longs के साथ एक फ़ील्ड निर्यात कर रहे हैं, तो वह इसे क्रमशः नंबर और JSON ऑब्जेक्ट के रूप में निर्यात करेगा, जो इसे सड़क के नीचे कठिन बना सकता है।

"सख्त मोड। बीएसएन प्रकार के स्ट्रिक्ट मोड निरूपण JSON RFC के अनुरूप होते हैं। कोई भी JSON पार्सर इन सख्त मोड अभ्यावेदन को कुंजी / मान युग्म के रूप में पार्स कर सकता है; हालाँकि, केवल MongoDB आंतरिक JSON पार्सर प्रारूप द्वारा बताई गई प्रकार की जानकारी को पहचानता है।"

https://docs.mongodb.com/manual/reference/mongodb-extended-json/

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