白話MongoDB(三)

作者: ningoo  發布時間: 2011-04-19 11:07  閱讀: 2163 次  推薦: 0   原文鏈接   [收藏]  

  通過源代碼編譯安裝好MongoDB之后,接下來需要配置運行。在MongoDB的安裝目錄,有幾個子目錄,bin下面是可執行文件,包括:

  • mongod:數據庫服務端,類似mysqld,每個實例啟動一個進程,可以fork為Daemon運行
  • mongo:客戶端命令行工具,類似sqlplus/mysql,其實也是一個js解釋器,支持js語法
  • mongodump/mongorestore:將數據導入為bson格式的文件/將bson文件恢復為數據庫,類似xtracbackup
  • mongoexport/mongoimport:將collection導出為json/csv格式數據/將數據導入數據庫,類似mysqldump/mysqlimport
  • bsondump:將bson格式的文件轉儲為json格式的數據
  • mongos:分片路由,如果使用了sharding功能,則應用程序連接的是mongos而不是mongod
  • mongofiles:GridFS管理工具
  • mongostat:實時監控工具

  最簡單的,通過執行mongod即可以啟動MongoDB數據庫服務,mongod支持很多的參數,但都有默認值,其中最重要的是需要指定數據文件路徑,或者確保默認的/data/db存在并且有訪問權限,否則啟動后會自動關閉服務。Ok,那也就是說,只要確保dbpath就可以啟動MongoDB服務了:

 
$ ./mongod --dbpath /tmp
Fri Apr
1 00:34:46 [initandlisten] MongoDB starting : pid=31978 port=27017 dbpath=/tmp 32-bit

** NOTE: when using MongoDB
32 bit, you are limited to about 2 gigabytes of data
** see http://blog.mongodb.org/post/
137788967/32-bit-limitations
** with --dur
, the limit is lower

Fri Apr
1 00:34:46 [initandlisten] db version v1.8.0, pdfile version 4.5
Fri Apr 1 00:34:46 [initandlisten] git version: 9c28b1d608df0ed6ebe791f63682370082da41c0
Fri Apr
1 00:34:46 [initandlisten] build sys info: Linux ning 2.6.36-ningoo #1 SMP
Wed Nov
17 21:45:13 CST 2010 i686 BOOST_LIB_VERSION=1_42
Fri Apr 1 00:34:46 [initandlisten] waiting for connections on port 27017
Fri Apr 1 00:34:46 [websvr] web admin interface listening on port 28017

  mongod的主要參數有:

  dbpath: 數據文件存放路徑,每個數據庫會在其中創建一個子目錄。用于防止同一個實例多次運行的mongod.lock也保存在此目錄中。
  logpath:錯誤日志文件
  logappend: 錯誤日志采用追加模式(默認是覆寫模式)
  bind_ip: 對外服務的綁定ip,一般設置為空,及綁定在本機所有可用ip上,如有需要可以單獨指定
  port: 對外服務端口。Web管理端口在這個port的基礎上+1000
  fork: 以后臺Daemon形式運行服務
  journal:開啟日志功能,通過保存操作日志來降低單機故障的恢復時間,在1.8版本后正式加入,取代在1.7.5版本中的dur參數。
  syncdelay: 執行sync的間隔,單位為秒。
  directoryperdb: 每個db存放在單獨的目錄中,建議設置該參數。
  maxConns: 最大連接數
  repairpath: 執行repair時的臨時目錄。在如果沒有開啟journal,異常宕機后重啟,必須執行repair操作。

  在源代碼中,mongod的參數分為一般參數,windows參數,replication參數,replica set參數,以及隱含參數。上面列舉的都是一般參數。如果要配置replication,replica set等,還需要設置對應的參數,這里先不展開,后續會有專門的文章來講述。執行mongo –help可以看到對大多數參數的解釋。但有一些隱含參數,則只能通過看代碼來獲得(見db.cpp po::options_description hidden_options(“Hidden options”);),隱含參數一般要么是還在開發中,要么是準備廢棄,因此在生產環境中不建議使用。

  可能你已經注意到,mongod的參數中,沒有設置內存大小相關的參數,是的,mongodb使用os mmap機制來緩存數據文件數據,自身目前不提供緩存機制。這樣好處是代碼簡單,mmap在數據量不超過內存時效率很高。但是數據量超過系統可用內存后,則寫入的性能可能不太穩定,容易出現大起大落,不過在最新的1.8版本中,這個情況相對以前的版本已經有了一定程度的改善,具體請參考realzyy的測試

  這么多參數,全面寫在命令行中則容易雜亂而不好管理。因此,mongod也和mysqld一樣支持將參數寫入到一個配置文本文件中,然后通過config參數來引用此配置文件:

 
./mongod --config /etc/mongo.cnf

  至此,已經成功的運行了一個單機的mongodb實例。

0
0
 
標簽:MongoDB
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()