2011-03-31 14 views
44

मेरे पास अलग-अलग सर्वर में दो मोंगोड हैं, दोनों --auth से शुरू होते हैं। अब मैं एक सर्वर से दूसरे सर्वर पर एक डीबी कॉपी करना चाहता हूं।मैं एक मोंगोडीबी सर्वर से दूसरे डेटाबेस में डेटाबेस कैसे कॉपी करूं?

> mongo 
> use admin 
> db.copyDatabase("mydb","mydb","another_server") 

इससे पता चलता है:

{ "errmsg" : "", "ok" : 0 } 

और:

> db.getLastError() 
null 

कोई त्रुटि लगता है, लेकिन प्रति सफल नहीं है। उपयोग करने के लिए सही आदेश क्या है?

उत्तर

73

आप --auth का उपयोग कर रहे हैं, तो आप अपने उपयोगकर्ता नाम/वहाँ में पासवर्ड ...

भी शामिल करना होगा आप जब आप आदेश चला "गंतव्य" सर्वर पर होना चाहिए ।

db.copyDatabase(<from_db>, <to_db>, <from_hostname>, <username>, <password>); 

सब यदि वह काम नहीं करता, तो आप डेटाबेस की प्रतिलिपि बनाना चाहते का एक गुलाम बनाने की तरह कुछ करने की कोशिश करना चाहते हो सकता है ...

+0

बहुत बहुत शुक्रिया, यह काम करता है ~ – Freewind

+2

उपयोगकर्ता नाम और पासवर्ड का नाम डेटाबेस के लिए नहीं है होस्ट नाम पीएस: मैंने इस गलती को इसलिए इसका उल्लेख किया :) – shammerw0w

+1

बहुत बहुत धन्यवाद, बहुत उपयोगी उत्तर :) –

16

की जस्टिन जेनकींस को ध्यान में रखना जवाब के अलावा यदि आप नेटवर्क के संपर्क में आने वाले मोंगोडब का उपयोग नहीं कर सकते हैं (केवल स्थानीयहोस्ट)

मैं "कार्यों" के बीच स्विच करने के लिए स्क्रीन का उपयोग करता हूं। मेरी सुविधा के लिए एसएस सुरंग और मोंगो अलग स्क्रीन टैब में निष्पादित किए जाते हैं।

चरण 1: बनाने के एक सुरंग

ssh [email protected] -L 27018:localhost:27017 
...Enter your password 

चरण 2:

mongo 
use admin 
db.copyDatabase(<fromdb>,<todb>,"localhost:27018",<username>,<password) 
+2

बस इन निर्देशों को स्पष्ट करने के लिए थोड़ा सा जिन्होंने कभी एसएसएच सुरंग नहीं बनाई है: 27018 यहां एक मनमाना स्थानीय बंदरगाह है जिसका उपयोग नहीं किया जाता है। यह सुनिश्चित करने के लिए कि इसका उपयोग नहीं किया जाता है, "lsof -ti: 9000" का उपयोग करें। यदि प्रक्रियाएं वापस आती हैं, तो अप्रयुक्त पोर्ट को खोजने के लिए lsof का उपयोग करें। इस जवाब में दूसरा 27017 पोर्ट पोर्ट रिमोट होस्ट पर चल रहा है, जिस पर आप कॉपी कर रहे हैं पोर्ट बंदरगाह चल रहा है। यह सुनिश्चित करने के लिए कि रिमोट होस्ट में साइन इन करें और पुष्टि करें कि इस पोर्ट पर मोंगो चल रहा है: "lsof -iTCP -sTCP: LISTEN | grep mongo"। – huwiler

11

Mongo संस्करण 3.2 से शुरू आप mongodump/mongorestore का उपयोग करके यह कर सकते हैं:

mongodump --host <from_host> --db <from_db> --archive | mongorestore --host <to_host> --archive 

अतिरिक्त जानकारी सका यहां मिलेगा:

https://docs.mongodb.com/manual/reference/program/mongodump/ https://docs.mongodb.com/manual/reference/program/mongorestore/

दूरस्थ मोंगो पहुंच योग्य बनाने के लिए आप इसे करने के लिए ssh सुरंग बना सकते हैं:

ssh -fN -L 27017:localhost:27117 <remote_host> 

इस मामले में आदेश हो सकता है:

mongodump --port 27117 --db <from_db> --archive | mongorestore --archive 
संबंधित मुद्दे