2012-01-19 26 views
8

शीर्षक की तरह, मेरे पास MongoDBGridFS डेटाबेस प्रकार की पूरी श्रृंखला (उदा।, टेक्स्ट, पीडीएफ, एक्सएलएस) के साथ डेटाबेस है, और मैं इस डेटाबेस को सबसे आसान तरीका बैकअप करना चाहता हूं।मैं मोंगोडीबी ग्रिडएफएस डेटाबेस को सबसे आसान तरीका कैसे बैकअप कर सकता हूं?

प्रतिकृति एक विकल्प नहीं है। अधिमानतः मैं डेटाबेस को फ़ाइल करने के लिए डेटाबेस को डंप करने का सामान्य डेटाबेस तरीका करना चाहता हूं और फिर उस फ़ाइल को बैकअप लेना चाहता हूं (जिसका उपयोग पूरे डेटाबेस को 100% बाद में आवश्यक होने पर पुनर्स्थापित करने के लिए किया जा सकता है)। क्या यह mongodump के साथ किया जा सकता है? मैं भी बैकअप को बढ़ाना चाहता हूं। क्या यह GridFS और mongodump के साथ समस्या होगी?

सबसे महत्वपूर्ण बात यह है कि यह करने का सबसे अच्छा तरीका है? मैं MongoDB से परिचित नहीं हूं, mongodump काम के साथ-साथ mysqldumpMySQL के साथ होगा? MongoDBGridFS और वृद्धिशील बैकअप के लिए सबसे अच्छा अभ्यास क्या है?

मैं Linux चला रहा हूं यदि इससे कोई फर्क पड़ता है।

उत्तर

15

ग्रिडएफएस दो संग्रहों में फाइलों को स्टोर करता है: fs.files और fs.chunks।

इस पर अधिक जानकारी GridFS विशिष्टता दस्तावेज़ में पाया जा सकता है: http://www.mongodb.org/display/DOCS/GridFS+Specification

दोनों संग्रहों mongodump, किसी भी अन्य संग्रह के रूप में ही उपयोग करते हुए बैकअप लिया जा सके। mongodump पर प्रलेखन यहां पाया जा सकता है:

इस प्रदर्शन के लिए, मेरे db नाम "gridFS":

पहले, mongodump http://www.mongodb.org/display/DOCS/Import+Export+Tools#ImportExportTools-mongodump

एक टर्मिनल से, इस निम्नलिखित कुछ ऐसा दिखाई देगा मेरे डेस्कटॉप पर एक फ़ोल्डर में fs.files और fs.chunks संग्रह वापस करने के लिए प्रयोग किया जाता है:

$ bin/mongodump --db gridFS --collection fs.chunks --out /Desktop 
connected to: 127.0.0.1 
DATABASE: gridFS  to  /Desktop/gridFS 
    gridFS.fs.chunks to /Desktop/gridFS/fs.chunks.bson 
     3 objects 
$ bin/mongodump --db gridFS --collection fs.files --out /Desktop 
connected to: 127.0.0.1 
DATABASE: gridFS  to  /Desktop/gridFS 
    gridFS.fs.files to /Users/mbastien/Desktop/gridfs/gridFS/fs.files.bson 
     3 objects 

अब, mongorestore (राक्षसों के प्रयोजन के लिए एक नया में बैक-अप संग्रह खींचने के लिए प्रयोग किया जाता है tration) डेटाबेस "gridFScopy"

$ bin/mongorestore --db gridFScopy --collection fs.chunks /Desktop/gridFS/fs.chunks.bson 
connected to: 127.0.0.1 
Thu Jan 19 12:38:43 /Desktop/gridFS/fs.chunks.bson 
Thu Jan 19 12:38:43  going into namespace [gridFScopy.fs.chunks] 
3 objects found 
$ bin/mongorestore --db gridFScopy --collection fs.files /Desktop/gridFS/fs.files.bson 
connected to: 127.0.0.1 
Thu Jan 19 12:39:37 /Desktop/gridFS/fs.files.bson 
Thu Jan 19 12:39:37  going into namespace [gridFScopy.fs.files] 
3 objects found 

कहा जाता है अब मोंगो खोल शुरू कर दिया है, ताकि बहाल सत्यापित किया जा सकता:

$ bin/mongo 
MongoDB shell version: 2.0.2 
connecting to: test 
> use gridFScopy 
switched to db gridFScopy 
> show collections 
fs.chunks 
fs.files 
system.indexes 
> 

संग्रह fs.chunks और fs.files सफलतापूर्वक वापस ला दिया जाएगा नया डीबी

आप समय-समय पर अपने fs.files और fs.chunks संग्रह पर mongodump करने के लिए एक स्क्रिप्ट लिख सकते हैं।

वृद्धिशील बैकअप के लिए, वे वास्तव में MongoDB द्वारा समर्थित नहीं हैं। http://groups.google.com/group/mongodb-user/browse_thread/thread/6b886794a9bf170f

निरंतर बैक-अप के लिए, कई उपयोगकर्ताओं को एक प्रतिकृति सेट का उपयोग: "MongoDB वृद्धिशील बैकअप" के लिए Google खोज विषय पर एक अच्छा MongoDB-उपयोगकर्ता Google समूह चर्चा का पता चलता है। (यह समझते हुए कि आपके मूल प्रश्न में, आपने कहा है कि यह एक विकल्प नहीं है। यह समुदाय के अन्य सदस्यों के लिए शामिल है जो इस प्रतिक्रिया को पढ़ रहे हैं।) प्रतिकृति सेट के एक सदस्य को यह सुनिश्चित करने के लिए छुपाया जा सकता है कि यह कभी नहीं बन जाएगा प्राथमिक और कभी नहीं पढ़ा जाएगा। इस पर अधिक जानकारी प्रतिकृति सेट कॉन्फ़िगरेशन दस्तावेज़ के "सदस्य विकल्प" खंड में पाई जा सकती है। http://www.mongodb.org/display/DOCS/Replica+Set+Configuration#ReplicaSetConfiguration-Memberoptions

+0

हालांकि मोंगोडीबी में कोई वृद्धिशील बैकअप क्षमता नहीं है, लेकिन किसी बाहरी वृद्धिशील बैकअप नौकरी को कम से कम यह देखने में सक्षम होना चाहिए कि पुराने और नए fs.files/fs.chunks और केवल बैकअप नए हैं? मैं इसे देखने के लिए थोड़ा सा खेलने के लिए जा रहा हूँ। मेरे दिमाग में प्रतिकृति थोड़ा सा स्केची है, मैं बैंग्स के लिए मोंगोडीबी पर निर्भर होने से नफरत करता हूं। इसके अलावा आदर्श रूप से मैं संग्रह उद्देश्यों के लिए एक दैनिक स्नैपशॉट चाहता हूं। बहुत ही धन्यवाद, बहुत जानकारीपूर्ण। – c00kiemonster

+2

यदि गंतव्य संग्रह पहले से मौजूद है, तो mongorestore प्रत्येक दस्तावेज़ के _id के माध्यम से कदम उठाएगा और केवल नए दस्तावेज़ जोड़ देगा। आप मोंगोडम्प को एक क्वेरी की आपूर्ति कर सकते हैं, इसलिए यदि आपके दस्तावेज़ों में "अंतिम अपडेट किया गया" फ़ील्ड, या समकक्ष है, तो आप केवल उन दस्तावेज़ों को डंप कर सकते हैं जिन्हें आपके अंतिम बैकअप की तिथि के बाद अपडेट या जोड़ा गया था। आप एक और उपयोगिता भी अपनी डीबीपीएथ निर्देशिका का बैकअप ले सकते हैं। बैकअप पर मोंगो प्रलेखन के "जर्नलिंग सक्षम के साथ बैकअप" और "शटडाउन और बैकअप" अनुभागों में इस पर कुछ नोट्स हैं। http://www.mongodb.org/display/DOCS/Backups – Marc

+0

यह बहुत आसान होगा। पारितोषिक के लिए धन्यवाद – c00kiemonster