PS:升级到3版本的Mongodb之后,drop集合是能够直接释放磁盘空间的linux
中止老版本Mongodbmongodb
>use admin >db.shutdownServer();
下载解压新版本Mongodbshell
wget https://fastdl.mongodb.org/linux/mongodb-linux-i686-3.0.2.tgz 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
建立两个目录数据库
mkdir data mkdir logs
把老版本的Mongodb配置文件拷贝到新Mongodb目录app
cp /data/mongodb2.6.4/mongodb.conf /data/mongodb3.0.2/
mongodb.conf内容示例:测试
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准备备份ui
/data/mongodb3.0.2/bin/mongod --dbpath /data/mongodb2.6.4/data/
备份rest
/data/mongodb3.0.2/bin/mongodump --out /data/mongodb3.0.2/bak/
而后关闭数据库,从新启动,使用WiredTiger引擎code
/data/mongodb3.0.2/bin/mongod --storageEngine wiredTiger --dbpath /data/mongodb3.0.2/data/
恢复数据server
/data/mongodb3.0.2/bin/mongorestore /data/mongodb3.0.2/bak/
恢复完成之后,再中止Mongodb。
修改mongodb.conf
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
/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版本的,确实占用了不多的空间。之后不再会随随便便删除集合(释放空间很麻烦),删除数据库了。
[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的时候,不能像之前同样直接使用
mongostat -u admin -p admin
命令直接查看状态
显示以下:
# mongostat -u admin -p admin 2015-04-16T10:48:13.192+0800 --authenticationDatabase is required when authenticating against a non $external database
如今须要多加个参数“--authenticationDatabase”
命令以下:
# mongostat -u root -p root123 --authenticationDatabase=admin
测试的时候,还只能选择"admin"这个数据库,选择其余的数据库,用其余库的认证帐户都不行
错误以下:
2015-04-16T10:49:57.912+0800 Failed: not authorized on admin to execute command { serverStatus: 1, recordStats: 0 }
或者
2015-04-16T10:51:17.267+0800 Failed: error connecting to db server: server returned error on SASL authentication step: Authentication failed.
mongotop命令也同样
另外居然mongostat不显示操做的库名了。
使用mongodump备份数据,mongorestore恢复数据
#备份全部表 mongodump -h 172.18.92.170 --port 27017 -u 用户名 -p 密码 -o /usr/local/mongodb/bak/ #恢复全部表 mongorestore --port 27017 -u 用户名 -p 密码 --authenticationDatabase admin /usr/local/mongodb/bak/