Mongodb 如何将2.6 mongo外壳连接到2.4.9 mongod?

Mongodb 如何将2.6 mongo外壳连接到2.4.9 mongod?,mongodb,linux-mint,Mongodb,Linux Mint,环境 Linux Mint 17.1 localhost 默认MongoDB端口27017 从脚本进行连接不需要用户名或密码 背景 我安装了MongoDB,其中包括: apt-get install mongodb-10gen=2.4.9 echo "mongodb-10gen install" | sudo dpkg --set-selections sudo apt-get install -y mongodb-org-shell 然后,我“固定”了包,因此不会对其应用任何更新:

环境

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

我安装了
MongoDB
,其中包括:

apt-get install mongodb-10gen=2.4.9
echo "mongodb-10gen install" | sudo dpkg --set-selections
sudo apt-get install -y mongodb-org-shell
然后,我“固定”了包,因此不会对其应用任何更新:

echo "mongodb-10gen hold" | sudo dpkg --set-selections
所需行为ur

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

其早期声明:

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

问题

如何
将2.6 mongo外壳连接到
2.4.9 mongod

我想我需要安装并运行
2.6mongoshell
,但是:

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

我已经对所有数据库执行了
mongodump
,因此需要备份

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

下面的一些步骤不起作用,但我已经将它们和它们的结果作为尝试的文档包含在内。我之前对所有数据库进行了
mongodump
,因此有一个备份

最终的结果是,除了
管理
数据库还原之外,所有的东西目前似乎都在“工作”

01.关闭
mongod

mongo
use admin
db.shutdownServer()
发件人:

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

apt-get install mongodb-10gen=2.4.9
echo "mongodb-10gen install" | sudo dpkg --set-selections
sudo apt-get install -y mongodb-org-shell
发件人:

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

apt-get install mongodb-10gen=2.4.9
echo "mongodb-10gen install" | sudo dpkg --set-selections
sudo apt-get install -y mongodb-org-shell
发件人:

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
我认为“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
发件人:

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
用户
数据库抛出了一些异常,例如:

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()


发件人:

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

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

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

$curl-Ohttp://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

要运行检查,还需要使用管理数据库,因此

>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