【问题标题】:Error while upgrading Mongodb from 3.2 to 3.6将 Mongodb 从 3.2 升级到 3.6 时出错
【发布时间】:2018-06-27 08:38:12
【问题描述】:

我需要在我的环境中将 mongodb 从 3.2 升级到 3.6。对于这个过程,我首先按照建议从 3.2 迁移到 3.4。成功迁移到 3.4 后,我开始迁移到 3.6,但无法启动 mongod。检查日志文件时,我发现如下错误: 重要提示:升级问题:在尝试升级到 3.6 之前,数据文件需要完全升级到 3.4 版;有关详细信息,请参阅http://dochub.mongodb.org/core/3.6-upgrade-fcv

我的 Mongod.conf

系统日志: 目的地:档案 日志附加:真 路径:/var/log/mongodb/mongod.log

存储: dbPath:/var/lib/mongo 杂志: 启用:真

流程管理: fork: true # fork 并在后台运行 pidFilePath: /var/run/mongodb/mongod.pid #pidfile的位置

网络: 港口:27017 绑定IP:127.0.0.1

【问题讨论】:

    标签: mongodb database-migration data-migration


    【解决方案1】:

    我有类似的问题,我已经在 Ubuntu 16.04 上从 MongoDB 3.4 升级到 3.6,但我错过了这重要的一步

    db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
    

    然后我必须降级到 3.4 才能做到这一点,然后再次升级到 3.6。以下是详细步骤:

    1.卸载 3.6

    备份/etc/mongod.conf
    备份/etc/apt/sources.list.d/mongodb-org-3.6.listed(重命名或移动到另一个文件夹)

    sudo apt-get update
    sudo apt-get remove mongodb-org-mongos mongodb-org-server mongodb-org-shell mongodb-org-tools
    

    2。重新安装 3.4
    检查文件夹 /etc/apt/sources.list.d/ 以查看此文件是否存在:mongodb-org-3.4.list。 如果不存在,可以通过这个命令重新创建:

    echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
    

    然后通过apt-get安装

    sudo apt-get update
    sudo apt-get install -y mongodb-org
    mongod --version
    sudo systemctl start mongod
    

    在我的情况下,命令systemctl start mongod 返回错误Failed to start mongod.service: Unit mongod.service not found 我通过这些命令解决了:

    sudo systemctl enable mongod
    sudo service mongod restart
    sudo service mongod status
    

    3.执行非常重要的命令
    降级到 3.4 后,运行这个

    mongo
    MongoDB shell version v3.4.10
    connecting to: mongodb://127.0.0.1:27017
    MongoDB server version: 3.4.10
    > db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
    { "featureCompatibilityVersion" : "3.4", "ok" : 1 }
    > exit
    

    4.再次升级 3.6
    恢复这个文件/etc/apt/sources.list.d/mongodb-org-3.6.listed

    sudo apt-get update
    sudo apt-get install mongodb-org-mongos mongodb-org-server mongodb-org-shell mongodb-org-tools
    

    恢复/etc/mongod.conf。现在,MongoDB 3.6 启动没有任何问题

    【讨论】:

    • 只是一个小修正,这些命令缺少 apt-get: sudo remove mongodb-org-mongos sudo remove mongodb-org-server sudo remove mongodb-org-shell sudo remove mongodb-org-tools
    • 还有一点建议:检查所有副本集成员上的setFeatureCompatibilityVersiondb.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } ) (docs.mongodb.com/manual/release-notes/3.6-upgrade-replica-set/…)
    • 我必须在步骤“2。重新安装 3.4”sudo apt-get install -y mongodb-org --allow-unauthenticated 中添加 --allow-unauthenticated
    • 我必须为 mongodb-org 添加 repo-key:sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
    • 非常有帮助 - 我错过了同样的步骤,这让我恢复了
    【解决方案2】:

    当您的 db 文件夹包含旧的 mongoDB 数据库格式(如 3.4)时,可能会出现这种情况

    这是一个有用的技巧如果您不介意丢失所有数据

    • 保存后可以删除/data/db文件夹的内容(ubuntu/linux mint)
    • 然后重启mongod,应该就可以正常工作了

    【讨论】:

    • 这很好用,因为不需要文件夹中托管的数据,因此可以删除。
    • 但这并不能解决旧数据存储的问题,我想要旧数据回来
    • 无法删除 /data/db 文件夹,因为您将丢失所有数据。这是一种解决方法而不是解决方案
    • 哦,不,这将删除所有现有数据。请注意此类情况
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 2020-03-22
    • 1970-01-01
    相关资源
    最近更新 更多