MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

मोंगो के पुराने संस्करण के डेटाबेस डंप को मोंगो के नए संस्करण में पुनर्स्थापित करना

मैंने यह पूछा था आधिकारिक MongoDB मेलिंग सूची पर वही प्रश्न . उन्होंने कहा कि एक बार में 1 से अधिक प्रमुख संस्करण को अपग्रेड न करें। (प्रमुख संस्करण हैं:2.2, 2.4, 2.6, 3.0, 3.2, 3.4)

मैं हर संस्करण को स्थापित करने की सामान्य अपग्रेड प्रक्रिया का पालन नहीं करना चाहता था बस मोंगोड लॉन्च करने और फिर इसे बंद करने के लिए। यह मुझे ऐसा लगता है जैसे यह पीछे छोड़ देगा और मैं अपने बुनियादी ढांचे के निर्माण की पटकथा और संस्करण को नियंत्रित करना पसंद करता हूं। इसलिए, मैंने नवीनतम उबंटू के साथ नए ईसी 2 इंस्टेंस लॉन्च करने का फैसला किया (चूंकि मेरे मोंगो v2.4 सर्वर भी 2 एलटीएस संस्करण पीछे थे) और नवीनतम मोंगोडीबी। मैंने डेटा अपग्रेड करने के लिए MongoDB के मध्यवर्ती संस्करणों की डॉकर छवियों का उपयोग किया।

https://gist.github.com/35d4_upd2d2f97da5 -श

समाधान का बड़ा हिस्सा यह है:

# mongo.conf is using the default dbPath: /var/lib/mongodb
# this path is for temporary use by the mongo docker container
mkdir -p /data/db/dump
# see: https://hub.docker.com/_/mongo/ (search for /data/db)
# see: https://github.com/docker-library/mongo/blob/30d09dbd6343d3cbd1bbea2d6afde49f5d9a9295/3.4/Dockerfile#L59
cd /data/db
mongodump -h prodmongo.int

# Get major versions from https://hub.docker.com/r/library/mongo/tags/
step=0
for major_version in 2.6.12 3.0.14 3.2.11 3.4.1; do
    sudo docker stop some-mongo || true
    sudo docker rm   some-mongo || true
    sudo docker run --name some-mongo -v /data/db:/data/db -d mongo:$major_version
    false; while [[ $? > 0 ]]; do
        sleep 0.5
        sudo docker exec -it some-mongo mongo --eval 'printjson((new Mongo()).getDBNames())'
    done
    if (( $step == 0 )); then
        sudo docker exec -it some-mongo mongorestore /data/db/dump
    fi
    ((step += 1))
done

# Finish up with docker
sudo rm -rf /data/db/dump/*
sudo docker exec -it some-mongo bash -c 'cd /data/db; mongodump'
sudo docker stop some-mongo
sudo docker rm   some-mongo

# Load upgraded data into latest version of MongoDB (WiredTiger storage engine will be used)
mongorestore /data/db/dump
sudo rm -rf /data


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongoexport के साथ एक वस्तु निर्यात करें, _id कैसे निर्दिष्ट करें?

  2. लुकअप पाइपलाइन:`$मिलान` स्थानीय क्षेत्र `$in` सरणी जब मूल्य से सरणी है और स्थानीय मूल्य पाया जाना है

  3. स्प्रिंग बूट में रनटाइम पर MongoDb संग्रह नाम निर्दिष्ट करें

  4. MongoDb एकत्रीकरण $मिलान त्रुटि:तर्क कुल पाइपलाइन ऑपरेटर होने चाहिए

  5. मोंगोडब - $set और $setOnInsert . में डुप्लिकेट फ़ील्ड