mongodb - 将 Mongo 从 4.4 升级到 5.0 现在 DB 不会启动
问题描述
我的数据库在 AWS 中运行,我升级到 Mongo 5.0。现在我什至无法启动数据库,因为我收到以下错误:
mongod.service - MongoDB Database Server
Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Mon 2021-10-25 00:16:42 UTC; 26min ago
Docs: https://docs.mongodb.org/manual
Process: 3888 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=62)
Process: 3886 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS)
Process: 3883 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS)
Process: 3881 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS)
根据文档 status=62 表示存在不兼容问题。
我想降级回 4.4,但没有明确的方法可以这样做。Mongo Docs 假设数据库正在运行并说运行db.adminCommand( { setFeatureCompatibilityVersion: "4.4" } )
我无法运行此命令,因为数据库甚至无法启动。
我删除了 5.0 二进制文件,但没有做任何事情。DB版本仍然显示“5.0.3”
您可以提供的任何帮助将不胜感激
这是一些额外的输出:
Unit mongod.service has begun starting up.
mongod[3591]: about to fork child process, waiting until server is ready for connections.
mongod[3591]: forked process: 3594
mongod[3591]: ERROR: child process failed, exited with 62
mongod[3591]: To see additional information in this output, start without the "--fork" option.
sudo[3579]: pam_unix(sudo:session): session closed for user root
systemd[1]: mongod.service: control process exited, code=exited status=62
systemd[1]: Failed to start MongoDB Database Server.
Subject: Unit mongod.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit mongod.service has failed.
--
-- The result is failed.
systemd[1]: Unit mongod.service entered failed state.
systemd[1]: mongod.service failed.
运行以下命令:cat mongod.log | tail -10
{"t":{"$date":"2021-10-25T22:49:33.833+00:00"},"s":"I", "c":"STORAGE", "id":22430, "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":"[1635202173:833865][3594:0x7f52128ce280], WT_SESSION.checkpoint: [WT_VERB_CHECKPOINT_PROGRESS] saving checkpoint snapshot min: 2, snapshot max: 2 snapshot count: 0, oldest timestamp: (0, 0) , meta checkpoint timestamp: (0, 0) base write gen: 441594"}}
{"t":{"$date":"2021-10-25T22:49:33.839+00:00"},"s":"I", "c":"STORAGE", "id":4795903, "ctx":"initandlisten","msg":"Reconfigure complete","attr":{"durationMillis":127}}
{"t":{"$date":"2021-10-25T22:49:33.839+00:00"},"s":"I", "c":"STORAGE", "id":4795902, "ctx":"initandlisten","msg":"Closing WiredTiger","attr":{"closeConfig":"leak_memory=true,"}}
{"t":{"$date":"2021-10-25T22:49:33.839+00:00"},"s":"I", "c":"STORAGE", "id":22430, "ctx":"initandlisten","msg":"WiredTiger message","attr":{"message":"[1635202173:839582][3594:0x7f52128ce280], close_ckpt: [WT_VERB_CHECKPOINT_PROGRESS] saving checkpoint snapshot min: 4, snapshot max: 4 snapshot count: 0, oldest timestamp: (0, 0) , meta checkpoint timestamp: (0, 0) base write gen: 441594"}}
{"t":{"$date":"2021-10-25T22:49:33.867+00:00"},"s":"I", "c":"STORAGE", "id":4795901, "ctx":"initandlisten","msg":"WiredTiger closed","attr":{"durationMillis":28}}
{"t":{"$date":"2021-10-25T22:49:33.867+00:00"},"s":"I", "c":"STORAGE", "id":22279, "ctx":"initandlisten","msg":"shutdown: removing fs lock..."}
{"t":{"$date":"2021-10-25T22:49:33.867+00:00"},"s":"I", "c":"-", "id":4784931, "ctx":"initandlisten","msg":"Dropping the scope cache for shutdown"}
{"t":{"$date":"2021-10-25T22:49:33.867+00:00"},"s":"I", "c":"FTDC", "id":4784926, "ctx":"initandlisten","msg":"Shutting down full-time data capture"}
{"t":{"$date":"2021-10-25T22:49:33.867+00:00"},"s":"I", "c":"CONTROL", "id":20565, "ctx":"initandlisten","msg":"Now exiting"}
{"t":{"$date":"2021-10-25T22:49:33.867+00:00"},"s":"I", "c":"CONTROL", "id":23138, "ctx":"initandlisten","msg":"Shutting down","attr":{"exitCode":62}}
解决方案
这为我解决了同样的问题。
删除版本 5.0
停止 mongod 服务
sudo systemctl stop mongod
sudo rm /tmp/mongodb-27017.sock
备份您的数据目录
cp -r /var/lib/mongodb /var/lib/mongodb_backup
删除 5.0 版及其数据
sudo apt purge mongodb-org
sudo apt autoremove
sudo rm /etc/mongod.conf
# Remove all mongo-org apt sources
sudo rm /etc/apt/sources.list.d/mongodb-org-*
安装 4.4 版
按照这里的说明进行操作mongodb v4.4 文档
运行版本 4.4 服务器
sudo systemctl start mongod
sudo systemctl status mongod
使用 mongodump 备份数据
mkdir $HOME/Desktop/mongo-data
cd $HOME/Desktop/mongo-data
mongodump
删除版本 4.4
停止 mongod 服务
sudo systemctl stop mongod
sudo rm /tmp/mongodb-27017.sock
删除数据目录
rm -r /var/lib/mongodb
删除版本 4.4 及其数据
sudo apt purge mongodb-org
sudo apt autoremove
sudo rm /etc/mongod.conf
# Remove all mongo-org apt sources
sudo rm /etc/apt/sources.list.d/mongodb-org-*
安装 5.0 版
按照这里的说明进行操作mongodb v5.0 文档
运行 5.0 版服务器
sudo systemctl start mongod
sudo systemctl status mongod
使用 mongorestore 恢复数据
cd $HOME/Desktop/mongo-data
mongodump
恭喜!现在您的旧数据在 v5.0 上运行
推荐阅读
- vespa - 如何在 Vespa.ai 中使用 ML 模型?
- c++ - 函数的地址如何传递给 std::thread
- json - adminMongo 优惠券到期日期
- ruby-on-rails - 如何使用 || 简单地编写多重比较 使用 Ruby on Rails
- web - Apple登录,授权方法仅第一次返回名称
- json - Jenkins API 过滤器工件
- excel - 如何在 VPN 外使用 MSXML2.XMLHTTP 对象?
- javascript - 基于api状态vue js数组更新
- amazon-web-services - 在子网中为 Fargate 使用固定专用 IP 范围
- python - Heroku Django 服务器中带有土耳其字符的搜索词不匹配