MongoDB數據導出及導入
我目前用到的分別是 mongodump 和 mongorestore,他們語法挺相似。
導出
mongodump --host localhost:27017 /data/backup/csser.com/csser.3-9/
表示將當前數據庫導出到 csser.3-9 目錄中去,導入用 mongorestore 即可恢復。
導入
mongorestore --host localhost:27017 /data/backup/csser.com/csser.3-9/
表示將 csser.3-9
目錄下的數據導入到 MongoDB 中。
安全停止並退出MongoDB
安全停止並退出 MongoDB
無論如何都要避免直接 kill
MongoDB 進程,如需正常安全的退出,向進程發送 SIGINT 或 SIGTERM 信號,如:
-9
$ sudo kill -2 pid // SIGINT
// 或
$ sudo kill pid // SIGTERM
查看集合佔用空間
查看集合佔用空間
> db.sessions.dataSize()
22658540
監控和釋放MongoDB佔用的內存
監控和釋放 MongoDB 佔用的內存
查看內存使用情況:
PRIMARY> use csser
switched to db csser
PRIMARY> db.serverStatus().mem
{
"bits" : 64,
"resident" : 82,
"virtual" : 5366,
"supported" : true,
"mapped" : 2463,
"mappedWithJournal" : 4926
}
釋放內存:
db.runCommand({closeAllDatabases:1})
查看MongoDB連接數
查看 MongoDB 連接數
> db.serverStatus().connections
{ "current" : 10, "available" : 809 }
進入Shell
進入 Shell
通過 mongo 命令連接數據庫後,會自動進入 MongoDB Shell,默認連接的是 test 數據庫,進行如下操作了解 Shell 基本指令:
> help
db.help() #查看 db 方法
db.mycoll.help() #查看集合方法
rs.help() #查看 replica set 方法
help admin #管理員幫助
help connect #連接數據庫幫助
help keys #快捷鍵幫助
help misc #瞭解 misc
help mr #mapreduce
show dbs #打印本服務器存在的數據庫名稱列表
show collections #打印當前數據庫的集合列表
show users #打印當前數據庫的用戶
show profile #打印 1s 內的 system.profile
show logs #打印 logger 名稱
show log [name] #打印內存中最新的一條日誌記錄,[name] 默認爲 'global'
use <db_name> #切換數據庫
db.foo.find() #列出集合 foo 中的對象列表
db.foo.find( { a : 1 } ) #列出集合 foo 中滿足條件 a== 1 的對象列表
it #查看 find 返回列表的其餘部分
DBQuery.shellBatchSize = x #設置 shell 默認顯示的項的個數
exit #退出 mongodb shell
MongoDB shell 內嵌了 Javascript 解析器,所以可以在其中書寫 Javascript 代碼。
連接數據庫
連接數據庫
mongo [options] [db address] [文件名 (以.js結尾)]
db address 可以只指定數據庫名(比如:csser),此時連接本地數據庫csser。
也可以這樣:192.169.0.5:27018/csser,表明連接192.169.0.5服務器27018端口的csser數據庫,端口號可以省略,默認爲27017。
如果指定文件名,在不指定 --shell 參數的情況下,進程在執行完這些js文件之後會自動退出,文件名必須以.js結尾。
查看 MongoDB 版本:
mongo --version
在運行 mongo 命令時不自動連接數據庫:
mongo --nodb