![]()
MongoDB Shell是MongoDB自帶的交互式Javascript shell,用來(lái)對(duì)MongoDB進(jìn)行操作和管理的交互式環(huán)境。 使用 "./mongo --help" 可查看相關(guān)連接參數(shù),下面將從常見(jiàn)的操作,如插入,查詢,修改,刪除等幾個(gè)方面闡述MongoDB shell的用法。 4.1 啟動(dòng)數(shù)據(jù)庫(kù) MongoDB安裝、配置完后,必須先啟動(dòng)它,然后才能使用它。怎么啟動(dòng)它呢?下面分別展示了3種方式來(lái)啟動(dòng)實(shí)例。 4.1.1 命令行方式啟動(dòng) MongoDB默認(rèn)存儲(chǔ)數(shù)據(jù)目錄為/data/db/ (或者 c:\data\db), 默認(rèn)端口27017,默認(rèn)HTTP 端口28017。當(dāng)然你也可以修改成不同目錄,只需要指定dbpath參數(shù): /Apps/mongo/bin/mongod --dbpath=/data/db [root@localhost ~]# /Apps/mongo/bin/mongod --dbpath=/data/db Sun Apr 8 22:41:06 [initandlisten] MongoDB starting : pid=13701 port=27017 dbpath=/data/db 32-bit …… Sun Apr 8 22:41:06 [initandlisten] waiting for connections on port 27017 Sun Apr 8 22:41:06 [websvr] web admin interface listening on port 28017 |
4.1.2 配置文件方式啟動(dòng) 如果是一個(gè)專(zhuān)業(yè)的DBA,那么實(shí)例啟動(dòng)時(shí)會(huì)加很多的參數(shù)以便使系統(tǒng)運(yùn)行的非常穩(wěn)定,這樣就可能會(huì)在啟動(dòng)時(shí)在mongod后面加一長(zhǎng)串的參數(shù),看起來(lái)非;靵y而且不好管理和維護(hù),那么有什么辦法讓這些參數(shù)有條理呢?MongoDB也支持同mysql一樣的讀取啟動(dòng)配置文件的方式來(lái)啟動(dòng)數(shù)據(jù)庫(kù),配置文件的內(nèi)容如下: [root@localhost bin]# cat /etc/mongodb.cnf dbpath=/data/db/ |
啟動(dòng)時(shí)加上”-f”參數(shù),并指向配置文件即可 [root@localhost bin]# ./mongod -f /etc/mongodb.cnf Mon May 28 18:27:18 [initandlisten] MongoDB starting : pid=18481 port=27017 dbpath=/data/db/ 32-bit …… Mon May 28 18:27:18 [initandlisten] waiting for connections on port 27017 Mon May 28 18:27:18 [websvr] web admin interface listening on port 28017 |
4.1.3 Daemon方式啟動(dòng) 大家可以注意到上面的兩種方式都慢在前臺(tái)啟動(dòng)MongoDB進(jìn)程,但當(dāng)啟動(dòng)MongoDB進(jìn)程的session窗口不小心關(guān)閉時(shí),MongoDB進(jìn)程也將隨之停止,這無(wú)疑是非常不安全的,幸好MongoDB提供了一種后臺(tái)Daemon方式啟動(dòng)的選擇,只需加上一個(gè)”--fork”參數(shù)即可,這就使我們可以更方便的操作數(shù)據(jù)庫(kù)的啟動(dòng),但如果用到了”--fork”參數(shù)就必須也啟用” --logpath”參數(shù),這是強(qiáng)制的 [root@localhost ~]# /Apps/mongo/bin/mongod --dbpath=/data/db --fork --fork has to be used with --logpath [root@localhost ~]# /Apps/mongo/bin/mongod --dbpath=/data/db --logpath=/data/log/r3.log --fork all output going to: /data/log/r3.log forked process: 19528 [root@localhost ~]# |
4.1.4 mongod參數(shù)說(shuō)明 最簡(jiǎn)單的,通過(guò)執(zhí)行mongod即可以啟動(dòng)MongoDB數(shù)據(jù)庫(kù)服務(wù),mongod支持很多的參數(shù),但都有默認(rèn)值,其中最重要的是需要指定數(shù)據(jù)文件路徑,或者確保默認(rèn)的/data/db存在并且有訪問(wèn)權(quán)限,否則啟動(dòng)后會(huì)自動(dòng)關(guān)閉服務(wù)。Ok,那也就是說(shuō),只要確保dbpath就可以啟動(dòng)MongoDB服務(wù)了 mongod的主要參數(shù)有: l dbpath: 數(shù)據(jù)文件存放路徑,每個(gè)數(shù)據(jù)庫(kù)會(huì)在其中創(chuàng)建一個(gè)子目錄,用于防止同一個(gè)實(shí)例多次運(yùn)行的mongod.lock也保存在此目錄中。 l logpath 錯(cuò)誤日志文件 l logappend 錯(cuò)誤日志采用追加模式(默認(rèn)是覆寫(xiě)模式) l bind_ip 對(duì)外服務(wù)的綁定ip,一般設(shè)置為空,及綁定在本機(jī)所有可用ip上,如有需要可以單獨(dú)指定 l port 對(duì)外服務(wù)端口。Web管理端口在這個(gè)port的基礎(chǔ)上+1000 l fork 以后臺(tái)Daemon形式運(yùn)行服務(wù) l journal 開(kāi)啟日志功能,通過(guò)保存操作日志來(lái)降低單機(jī)故障的恢復(fù)時(shí)間,在1.8版本后正式加入,取代在1.7.5版本中的dur參數(shù)。 l syncdelay 系統(tǒng)同步刷新磁盤(pán)的時(shí)間,單位為秒,默認(rèn)是60秒。 l directoryperdb 每個(gè)db存放在單獨(dú)的目錄中,建議設(shè)置該參數(shù)。與MySQL的獨(dú)立表空間類(lèi)似 l maxConns 最大連接數(shù) l repairpath 執(zhí)行repair時(shí)的臨時(shí)目錄。在如果沒(méi)有開(kāi)啟journal,異常down機(jī)后重啟,必須執(zhí)行repair操作。 在源代碼中, mongod的參數(shù)分為一般參數(shù), windows參數(shù), replication參數(shù), replica set參數(shù),以及隱含參數(shù)。上面列舉的都是一般參數(shù)。如果要配置 replication, replica set等,還需要設(shè)置對(duì)應(yīng)的參數(shù),這里先不展開(kāi),后續(xù)會(huì)有專(zhuān)門(mén)的章節(jié)來(lái)講述。執(zhí)行 mongod --help可以看到對(duì)大多數(shù)參數(shù)的解釋?zhuān)幸恍╇[含參數(shù),則只能通過(guò)看代碼來(lái)獲得 (見(jiàn) db.cpp po: ptions_description hidden_options(“ Hidden options” ) ,隱含參數(shù)一般要么是還在開(kāi)發(fā)中,要么是準(zhǔn)備廢棄,因此在生產(chǎn)環(huán)境中不建議使用。 可能你已經(jīng)注意到,mongod的參數(shù)中,沒(méi)有設(shè)置內(nèi)存大小相關(guān)的參數(shù),是的,MongoDB使用os mmap機(jī)制來(lái)緩存數(shù)據(jù)文件數(shù)據(jù),自身目前不提供緩存機(jī)制。這樣好處是代碼簡(jiǎn)單,mmap在數(shù)據(jù)量不超過(guò)內(nèi)存時(shí)效率很高。但是數(shù)據(jù)量超過(guò)系統(tǒng)可用內(nèi)存后,則寫(xiě)入的性能可能不太穩(wěn)定,容易出現(xiàn)大起大落,不過(guò)在最新的1.8版本中,這個(gè)情況相對(duì)以前的版本已經(jīng)有了一定程度的改善。 這么多參數(shù),全面寫(xiě)在命令行中則容易雜亂而不好管理。因此,mongod支持將參數(shù)寫(xiě)入到一個(gè)配置文本文件中,然后通過(guò)config參數(shù)來(lái)引用此配置文件: ./mongod --config /etc/mongo.cnf
|