Mongodb2.6升級到Mongodb3.0.2筆記

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/
相關文章
相關標籤/搜索