mongodb从2.6升级到3.0在linux下的操做实现

中止老版本Mongodblinux

1
2
>use admin 
>db.shutdownServer();

下载解压新版本Mongodbmongodb

1
2
3
4
gzip -d mongodb-linux-i686-3.0.2.tgz
tar xvf mongodb-linux-i686-3.0.2.tar
mv mongodb-linux-i686-3.0.2 mongodb3.0.2

建立两个目录shell

1
2
mkdir data
mkdir logs

把老版本的Mongodb配置文件拷贝到新Mongodb目录数据库

1
cp /data/mongodb2.6.4/mongodb.conf /data/mongodb3.0.2/

mongodb.conf内容示例:app

1
2
3
4
5
6
7
bind_ip=127.0.0.1
port=27017
dbpath=/data/mongodb3.0.2/data/
logpath=/data/mongodb3.0.2/logs/mongodb.log
logappend=true
auth=true
fork=true

经过Mongodb3启动Mongodb准备备份测试

1
/data/mongodb3.0.2/bin/mongod --dbpath /data/mongodb2.6.4/data/

备份ui

1
/data/mongodb3.0.2/bin/mongodump --out /data/mongodb3.0.2/bak/

而后关闭数据库,从新启动,使用WiredTiger引擎spa

1
/data/mongodb3.0.2/bin/mongod --storageEngine wiredTiger --dbpath /data/mongodb3.0.2/data/

恢复数据.net

1
/data/mongodb3.0.2/bin/mongorestore /data/mongodb3.0.2/bak/

恢复完成之后,再中止Mongodb。rest

修改mongodb.conf

1
2
3
4
5
6
7
8
bind_ip=127.0.0.1
port=27017
dbpath=/data/mongodb3.0.2/data/
logpath=/data/mongodb3.0.2/logs/mongodb.log
logappend=true
auth=true
fork=true
storageEngine=wiredTiger

而后启动Mongodb

1
2
3
4
5
/data/mongodb3.0.2/bin/mongod --config /data/mongodb3.0.2/mongodb.conf
------分割线------结果------
about to fork child process, waiting until server is ready for connections.
forked process: 11197
child process started successfully, parent exiting

记得删除先前版本/usr/bin/mongo,把新版本的复制过去

测试了AUTH,一切正常,建立的帐户也没丢失。

另外数据相比2版本的,确实占用了不多的空间。之后不再会随随便便删除集合(释放空间很麻烦),删除数据库了。

1
2
3
4
5
6
7
[root@localhost  mongodb3.0.2]# mongo
MongoDB shell version: 3.0.2
connecting to: test
> use datatest
switched to db datatest
> db.auth('admin','admin')
1

一切正常,删除之前的目录,跟备份数据的目录。

Update:

更新到Mongodb3.0.2版本之后,一切正常,在使用 mongostat的时候,不能像之前同样直接使用

1
mongostat -u admin -p admin

命令直接查看状态

显示以下:

1
2
# mongostat -u admin -p admin
2015-04-16T10:48:13.192+0800    --authenticationDatabase is required when authenticating against a non $external database

如今须要多加个参数“--authenticationDatabase”

命令以下:

1
# mongostat -u root -p root123 --authenticationDatabase=admin

测试的时候,还只能选择"admin"这个数据库,选择其余的数据库,用其余库的认证帐户都不行

错误以下:

1
2015-04-16T10:49:57.912+0800    Failed: not authorized on admin to execute command { serverStatus: 1, recordStats: 0 }

或者

1
2015-04-16T10:51:17.267+0800    Failed: error connecting to db server: server returned error on SASL authentication step: Authentication failed.

mongotop命令也同样

另外居然mongostat不显示操做的库名了。

相关文章
相关标签/搜索