Я спросил об этом same question on the official MongoDB mailing list. Они заявили, что не будут обновлять более одной основной версии за раз. (Основные версии: 2.2, 2.4, 2.6, 3.0, 3.2, 3.4)
Я не хотел следовать нормальному процессу обновления каждой версии. Просто чтобы запустить mongod, а затем отключите его. Мне кажется, что он остался бы крутым, и мне нравится, чтобы мое здание инфраструктуры было написано и контролировалось версией. Итак, я решил запустить новые экземпляры EC2 с последним Ubuntu (поскольку мои серверы Mongo v2.4 были также 2 версиями LTS) и последний MongoDB. Я использовал докеры изображений промежуточных версий MongoDB для обновления данных.
https://gist.github.com/RichardBronosky/2d04c7c2e9a5bea67cd9760a35415a3f#file-uat_mongodb_upgrade_from_prod-sh
Основная часть раствора заключается в следующем:
# 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
Цените его человеком. – SRINI794
Да, я задал этот вопрос в официальном списке рассылки MongoDB, и они сказали, что не будут обновлять более одной основной версии за раз. (Основные версии: 2.2, 2.4, 2.6, 3.0, 3.2, 3.4) https://groups.google.com/d/msg/mongodb-user/cbXeM283iHM/y0QbW1h4BQAJ –