PS:升級到3版本的Mongodb以后,drop集合是可以直接釋放磁盤空間的
停止老版本Mongodb
>use admin >db.shutdownServer();
下載解壓新版本Mongodb
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目錄
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准備備份
/data/mongodb3.0.2/bin/mongod --dbpath /data/mongodb2.6.4/data/
備份
/data/mongodb3.0.2/bin/mongodump --out /data/mongodb3.0.2/bak/
然后關閉數據庫,重新啟動,使用WiredTiger引擎
/data/mongodb3.0.2/bin/mongod --storageEngine wiredTiger --dbpath /data/mongodb3.0.2/data/
恢復數據
/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不顯示操作的庫名了。

