【问题标题】:How to connect a 2.6 mongo shell to a 2.4.9 mongod?如何将 2.6 mongo shell 连接到 2.4.9 mongod?
【发布时间】:2015-03-01 13:06:23
【问题描述】:

环境

  • Linux Mint 17.1
  • localhost
  • 默认 MongoDB 端口27017
  • 从脚本连接不需要用户名或密码。

背景

我安装了MongoDB

apt-get install mongodb-10gen=2.4.9

然后我“固定”了包,这样就不会对其应用更新:

echo "mongodb-10gen hold" | sudo dpkg --set-selections

期望的行为r

我想升级到最新版本的 MongoDB,正在查看此过程的官方指南:

http://docs.mongodb.org/manual/release-notes/2.6-upgrade

它的早期状态:

要开始升级过程,请将 2.6 mongo shell 连接到 MongoDB 2.4 mongos 或 mongod 并运行 db.upgradeCheckAllDBs() 以检查数据集的兼容性。

问题

我如何将connect a 2.6 mongo shell 转为2.4.9 mongod

我猜我需要安装 2.6 mongo shell 并运行它,但是:

  • 我不知道该怎么做,而且
  • 我不想破坏任何东西。

我已经完成了所有数据库的mongodump,所以有一个备份。

【问题讨论】:

    标签: mongodb linux-mint


    【解决方案1】:

    我知道您已经设法解决了您的问题,但是以下链接对我有所帮助,我想我可以将其发布在这里以供将来参考,以防其他人发现升级 mongodb 很困难:

    http://blog.lecstor.com/mongodb-upgrade-24-to-26-in-debian

    编辑:一个更合适的答案,引用上面的链接:

    您必须下载 MongoDB 的 tar 版本并直接从那里运行 shell:

    $ curl -O http://downloads.mongodb.org/linux/mongodb-linux-x86_64-2.6.1.tgz $ tar -zxvf mongodb-linux-x86_64-2.6.1.tgz $ ./mongodb-linux-x86_64-2.6.1/bin/mongo

    要运行检查,您还需要使用 admin 数据库,所以..

    >use admin
    switched to db admin
    >db.upgradeCheckAllDBs()
    
    Checking database mydb1
    
    Checking collection mydb1.coll1
    
    Checking collection mydb1.coll2
    
    Checking database mydb2
    
    Checking collection mydb2.coll1
    
    Checking collection mydb2.coll2
    
    Everything is ready for the upgrade!
    true
    

    【讨论】:

      【解决方案2】:

      我尝试单独安装mongo 2.6,但这导致其他软件包被标记为删除。我最终只是卸载了旧包并重新安装了新包,并在此处包含了该过程以供参考。

      下面的一些步骤不起作用,但我已将它们及其结果作为尝试的文档包含在内。我之前已经完成了所有数据库的mongodump,所以有一个备份。

      最终结果是,除了admin 数据库恢复之外,目前一切似乎都在“工作”。

      01.关闭mongod

      mongo
      use admin
      db.shutdownServer()
      

      来自:http://docs.mongodb.org/manual/tutorial/manage-mongodb-processes/

      02. 删除了mongodb-10gen 的“固定包”状态:

      echo "mongodb-10gen install" | sudo dpkg --set-selections
      

      来自:https://help.ubuntu.com/community/PinningHowto

      03. 然后我尝试安装最新的mongo

      sudo apt-get install -y mongodb-org-shell
      

      来自:http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

      04.shell版本好像更新了:

      mongo --version
      MongoDB shell version: 2.6.6
      

      05.但后来我无法与mongo联系:

      mongo
      connecting to: test
      2015-01-04T00:08:50.482+1000 warning: Failed to connect to 127.0.0.1:27017, reason: errno:111 Connection refused
      2015-01-04T00:08:50.483+1000 Error: couldn't connect to server 127.0.0.1:27017 (127.0.0.1), connection attempt failed at src/mongo/shell/mongo.js:146
      exception: connect failed
      

      mongod:

      mongod
      The program 'mongod' is currently not installed. You can install it by typing:
      sudo apt-get install mongodb-server
      

      06. 我运行以下命令查看 apt-get 安装/删除的历史记录:

      less /var/log/apt/history.log
      

      得到:

      Start-Date: 2015-01-04  00:02:08
      Commandline: apt-get install -y mongodb-org-shell
      Install: mongodb-org-shell:amd64 (2.6.6)
      Remove: mongodb-10gen:amd64 (2.4.9)
      End-Date: 2015-01-04  00:02:21
      

      07. 我跑了:

      dpkg --get-selections
      

      看到了:

      mongodb-10gen deinstall
      

      我认为“卸载”意味着它被标记为删除。

      08. 我决定删除所有mongodb-10gen 包:

      sudo apt-get purge mongodb-10gen
      
      Reading package lists... Done
      Building dependency tree       
      Reading state information... Done
      The following packages were automatically installed and are no longer required:
        gir1.2-clutter-gst-2.0 gir1.2-ges-1.0 gstreamer1.0-gnonlin libav-tools
        libavdevice53 libavfilter3 libavresample1 libges-1.0-0 libgoocanvas-common
        libgoocanvas3 libmlt++3 libmlt-data libmlt6 libqjson0 libquicktime2
        libsoprano4 melt python-dateutil python-gst-1.0 python-matplotlib
        python-matplotlib-data python-mlt python-pygoocanvas python-pyparsing
        python-tz python3-bs4 python3-markdown shared-desktop-ontologies
        soprano-daemon wkhtmltopdf
      Use 'apt-get autoremove' to remove them.
      The following packages will be REMOVED:
        mongodb-10gen*
      0 to upgrade, 0 to newly install, 1 to remove and 3 not to upgrade.
      After this operation, 0 B of additional disk space will be used.
      Do you want to continue? [Y/n] 
      
      Y
      
      (Reading database ... 246460 files and directories currently installed.)
      Removing mongodb-10gen (2.4.9) ...
      Purging configuration files for mongodb-10gen (2.4.9) ...
      dpkg: warning: while removing mongodb-10gen, directory '/var/lib/mongodb' not empty so not removed
      

      来自:https://askubuntu.com/a/147177

      09.我备份了无法删除的目录,即/var/lib/mongodb

      sudo cp -avr /var/lib/mongodb/ /home/
      

      10. 然后将其删除。

      cd /var/lib/
      sudo rm -rf mongodb/
      

      11.我搜索了是否还有mongodb-10gen 包:

      dpkg --get-selections | grep "mongodb-10gen"
      

      什么也没返回。

      12. 我通过 Synaptic 包管理器安装了 2.6.6 版的 mongodb-org

      13.我检查了所有 mongodb 包的版本是否相同:

      mongodump --version
      mongorestore --version
      mongo --version
      mongod --version
      mongos --version
      # all returned 2.6.6
      

      14. 然后我对每个数据库转储做了一个mongorestore,例如:

      mongorestore --db dname_01 /path/to/dump/dbname_01/
      mongorestore --db dname_02 /path/to/dump/dbname_02/
      

      它似乎对所有数据库都有效,但在 admin 数据库上失败:

      assertion: 17415 Cannot restore users with schema version 1 to a system with server version 2.5.4 or greater
      

      users 数据库抛出了一些异常,例如:

      Restoring to users.pending_registrations without dropping. Restored data will be inserted without raising errors; check your server log
      Restoring to users.roles without dropping. Restored data will be inserted without raising errors; check your server log
      Restoring to users.users without dropping. Restored data will be inserted without raising errors; check your server log
      

      15. 我跑了db.upgradeCheckAllDBs()

      mongo
      use admin
      
      db.upgradeCheckAllDBs()
      
      Checking database local
      Checking collection local.startup_log
      Checking collection local.system.indexes
      Checking database dname_01
      ...
      Checking database admin
      Everything is ready for the upgrade!
      true
      

      来自:http://docs.mongodb.org/manual/release-notes/2.6-upgrade/#preparedness

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-01
        • 2018-05-07
        • 1970-01-01
        • 2015-12-17
        • 2015-09-26
        • 1970-01-01
        相关资源
        最近更新 更多