gpt4 book ai didi

mongodb - 将旧版本 mongo 的数据库转储恢复到新版本 mongo

转载 作者:IT老高 更新时间:2023-10-28 13:17:48 27 4
gpt4 key购买 nike

目前,我有一个旧版本的 mongo,即 2.6 在我的系统上运行。我的网站已经投入生产,并且拥有大量客户数据。我正在计划升级到 mongo 3.2。

所以,我的问题是 mongo v3.2 的 mongorestore 是否适用于 v2.6 的数据转储?或者,它是否会产生问题?

任何答案都将是无价的!谢谢

最佳答案

我问过这个 same question on the official MongoDB mailing list .他们说一次不要升级超过 1 个主要版本。 (主要版本为:2.2、2.4、2.6、3.0、3.2、3.4)

我不想遵循安装每个版本的正常升级过程只是为了启动 mongod 然后将其关闭。这对我来说感觉就像它会留下杂乱无章的东西,我喜欢让我的基础设施构建脚本化和版本控制。因此,我决定使用最新的 Ubuntu(因为我的 Mongo v2.4 服务器也落后 2 个 LTS 版本)和最新的 MongoDB 启动新的 EC2 实例。我使用 MongoDB 中间版本的 docker 镜像进行数据升级。

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

关于mongodb - 将旧版本 mongo 的数据库转储恢复到新版本 mongo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37833561/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com