啟動MongoDB資料庫

hzbook2008發表於2012-01-11
本文節選自《MongoDB管理與開發精要》第2章。

2.3   啟動資料庫

MongoDB安裝、配置完後,必須先啟動,然後才能使用它。怎樣啟動呢?下面介紹3種方式啟動例項。

2.3.1   命令列方式

MongoDB預設儲存資料目錄為/data/db/(或者C:/data/db),預設埠為27017,預設HTTP 埠為28017。當然,也可以改成其他目錄,只需要指定“dbpath”引數,如下面的程式碼所示:
[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

2.3.2   配置檔案方式

如果是專業的DBA,在例項啟動時需要加很多的引數,以便使系統執行得更加穩定。可能啟動時在mongod後面加一長串的引數,這樣看起來非常混亂,而且不好管理和維護。有什麼方法讓這些引數有條理呢?MongoDB支援同MySql一樣的讀取配置檔案的方式來啟動資料庫,如下面的程式碼所示:
[root@localhost bin]# cat /etc/mongodb.cnf
dbpath=/data/db/
啟動時加上“-f”引數,並指向配置檔案即可,如下面的程式碼所示:
[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

2.3.3   Daemon方式

大家可能注意到,前面的兩種方式都是在前臺啟動MongoDB程式,當啟動MongoDB程式的Session視窗不小心關閉時,MongoDB程式也將隨之停止,這無疑是非常不安全的。幸好,MongoDB提供了一種後臺Daemon方式啟動,只需加上一個“--fork”引數即可,這就可以方便地運算元據庫的啟動。要注意的是,用到了“--fork”引數就必須啟用“--logpath”引數,這是強制性的,如下面的程式碼所示:
[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 ~]#

2.3.4   mongod引數方式

最簡單的就是通過執行mongod啟動MongoDB資料庫服務。mongod支援很多的引數,但都有預設值,其中最重要的是,需要指定資料檔案路徑,或者確保預設的/data/db存在並且有訪問許可權,否則啟動後會自動關閉服務。也就是說,只要確保dbpath就可以啟動MongoDB服務了。
mongod的主要引數見表2-3。
表2-3   mongod的主要引數
引數名                描述
dbpath     資料檔案存放路徑,每個資料庫會在其中建立一個子目錄,用於防止同一個例項多次執行的mongod.lock也儲存在此目錄中
Logpath     錯誤日誌檔案
Logappend     錯誤日誌採用追加模式(預設是覆蓋模式)
bind_ip     對外服務的繫結ip,一般設定為空並且繫結在本機所有可用ip上,如有需要可以單獨指定port(對外服務監聽埠)。Web管理埠在這個port的基礎上+1000
Fork     以後臺Daemon形式執行服務
Journal     開啟日誌功能,通過儲存操作日誌來降低單機故障的恢復時間,在1.8版本後正式加入,取代1.7.5版本中的dur引數
Syncdelay     系統同步重新整理磁碟的時間,預設是60(單位:秒)
Directoryperdb     每個db存放在單獨的目錄中,建議設定該引數。與MySQL的獨立表空間類似
MaxConns     最大連線數
Repairpath     執行repair時的臨時目錄。如果沒有開啟Journal,異常down機後重啟,必須執行repair操作
在原始碼中,mongod的引數分為一般引數、Windows引數、Replication引數、Replica Set引數、隱含引數。表2-3中列舉的都是一般引數。如果要配置Replication、Replica Set等,還需要設定對應的引數,這裡先不展開,將在第11章講述。執行“mongod --help”可以看到對大多數引數的解釋,但有一些隱含引數只能通過檢視原始碼來獲得。隱含引數要麼是還在開發中,要麼是準備廢棄,因此在生產環境中不建議使用。
可能你已經注意到,mongod的引數中沒有設定記憶體大小相關的引數。是的,MongoDB使用os mmap機制來快取資料檔案資料,自身目前不提供快取機制。這樣做的好處是程式碼簡單,mmap在資料量不超過記憶體時效率很高。但是資料量超過系統可用記憶體後,寫入的效能可能不太穩定,容易出現大起大落。最新的1.8版本中,這種情況已經有了一定程度的改善。
這麼多引數全部寫在命令列中容易雜亂、不好管理,因此,mongod支援將引數寫到一個配置文字檔案中,然後通過“config”引數來引用此配置檔案,如下面的程式碼所示:
./mongod --config /etc/mongo.cnf

啟動MongoDB資料庫
《MongoDB管理與開發精要》

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16502878/viewspace-714757/,如需轉載,請註明出處,否則將追究法律責任。

相關文章