快速搭建屬於自己的mongodb數據庫


前言

MongoDB 是一個基於分布式文件存儲的數據庫。由C++語言編寫,支持Windows,Linux,OSX,Solaris等平台,默認端口為27017,是一個效率非常高的nosql數據庫。

我的測試環境:window10  64位

我的安裝路徑:D:\mongodb

我學習mongodb的筆記本:MongoDB

配置mongodb我也遇到了兩個關鍵性的問題,記錄這篇博客希望搭建mongodb的同行者,可以順利完成配置。

安裝

下載地址:http://www.mongodb.org/downloads

選擇下載版本:

我下載的是最新版本的zip格式。

需要注意的是:

1、從mongodb2.2版本開始,mongodb不在支持windowXp

參考:心知博客

PLATFORM SUPPORT
Starting in version 2.2, MongoDB does not support Windows XP. Please use a more recent version of Windows to use more recent releases of MongoDB.

2、如果運行系統為windows server 2008 R2 或者 window 7,需要進入微軟官網下載補丁

IMPORTANT
If you are running any edition of Windows Server 2008 R2 or Windows 7, please install a hotfix to resolve an issue with memory mapped files on Windows.

並且這里需要特別注意:
下載完成后會得到一個exe文件,但是這里並不能直接對這個文件進行安裝,需要先將其解壓,解壓后得到 Windows6.1-KB2731284-v3-x64.msu 文件,這時候才可以進行安裝,之后重啟即可

3、64位的MongoDB將不能在32位的windows上運行啟動

配置

1、創建一個用於存放mongodb數據的目錄,

這里我創建在D:\mongodb\data\db,打開cmd(這里我用的Git Bash),進入到mongodb的bin目錄,運行下面命令

mongod --dbpath="D:\mongodb\data\db"

然后出現了我遇到的第一個問題

2016-12-29T22:30:02.229+0800 I CONTROL  [initandlisten] MongoDB starting : pid=10220 port=27017 dbpath=C:\Program Files\MongoDB\db 64-bit host=Lenovo
2016-12-29T22:30:02.234+0800 I CONTROL  [initandlisten] targetMinOS: Windows 7/Windows Server 2008 R2
2016-12-29T22:30:02.235+0800 I CONTROL  [initandlisten] db version v3.4.1
2016-12-29T22:30:02.237+0800 I CONTROL  [initandlisten] git version: 5e103c4f5583e2566a45d740225dc250baacfbd7
2016-12-29T22:30:02.238+0800 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.1t-fips  3 May 2016
2016-12-29T22:30:02.240+0800 I CONTROL  [initandlisten] allocator: tcmalloc
2016-12-29T22:30:02.241+0800 I CONTROL  [initandlisten] modules: none
2016-12-29T22:30:02.241+0800 I CONTROL  [initandlisten] build environment:
2016-12-29T22:30:02.243+0800 I CONTROL  [initandlisten]     distmod: 2008plus-ssl
2016-12-29T22:30:02.244+0800 I CONTROL  [initandlisten]     distarch: x86_64
2016-12-29T22:30:02.245+0800 I CONTROL  [initandlisten]     target_arch: x86_64
2016-12-29T22:30:02.246+0800 I CONTROL  [initandlisten] options: { storage: { dbPath: "C:\Program Files\MongoDB\db" } }
2016-12-29T22:30:02.249+0800 I STORAGE  [initandlisten] exception in initAndListen: 20 Attempted to create a lock file on a read-only directory: C:\Program Files\MongoDB\db, terminating
2016-12-29T22:30:02.251+0800 I NETWORK  [initandlisten] shutdown: going to close listening sockets...
2016-12-29T22:30:02.255+0800 I NETWORK  [initandlisten] shutdown: going to flush diaglog...
2016-12-29T22:30:02.256+0800 I CONTROL  [initandlisten] now exiting
2016-12-29T22:30:02.257+0800 I CONTROL  [initandlisten] shutting down with code:100

最后出現shutting down with code :100,

在心知博客我找到了答案,原因在於:我們進入的命令提示符只是普通模式,所以出現無法創建文件的問題,切換到管理員模式,重新運行命令:

然后就可以正常啟動。

2、我把mongo命令添加到path環境變量中,

這樣我就不需要每次都進入到mongodb下的bin中執行mongo命令了。

3、把mongodb設置為windows服務,

采用管理員:命令提示符,切換到安裝mongodb目錄的bin目錄,運行下面命令,把MongoDB設置為Windows服務:

mongod --dbpath="D:\mongodb\data\db" --logpath="D:\mongodb\data\log" --logappend --directoryperdb --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install

參數解讀:

 --dbpath="D:\mongodb\data\db"   mongodb的數據目錄

 --logpath="D:\mongodb\data\log" --logappend   指定日志文件。並且日志是以追加的方式輸出的

 --serviceName "MongoDB" --serviceDisplayName "MongoDB"   windows服務器名稱和顯示名稱為MongoDB

 --directoryperdb   表示每個db都會新建一個目錄

 --install        進行安裝,與之相對的是--remove

啟動停止mongodb服務的命令

啟動MongoDB:net start MongoDB
停止MongoDB:net stop MongoDB

然后我遇到了第二個問題,服務器安裝成功之后,進行啟動,發現無法啟動,查看log日志文件,有這樣的信息:

2016-12-29T23:51:23.705+0800 I CONTROL  [initandlisten] options: { service: true, storage: { dbPath: "D:\mongodb\data\db", directoryPerDB: true }, systemLog: { destination: "file", logAppend: true, path: "D:\mongodb\data\log\mongodb.log" } }
2016-12-29T23:51:23.706+0800 I -        [initandlisten] Detected data files in C:\Program Files\MongoDB\db created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
2016-12-29T23:51:23.707+0800 I STORAGE  [initandlisten] exception in initAndListen: 72 Requested option conflicts with current storage engine option for directoryPerDB; you requested true but the current server storage is already set to false and cannot be changed, terminating
2016-12-29T23:51:23.707+0800 I NETWORK  [serviceStopWorker] shutdown: going to close listening sockets...
2016-12-29T23:51:23.707+0800 I NETWORK  [serviceStopWorker] shutdown: going to flush diaglog...
2016-12-29T23:51:23.707+0800 I CONTROL  [serviceStopWorker] now exiting
2016-12-29T23:51:23.707+0800 I CONTROL  [serviceStopWorker] shutting down with code:49

 

大致意思就是說存儲引擎沖突,(之前在命令行啟動過mongodb服務,然后就在數據目錄生成了數據文件)

這個時候我們可以到數據目錄中找到storage.bson這個文件,刪除即可。

 

我們可以通過添加到環境變量中的mongo命令來啟動數據庫,這樣我們就可以通過命令行來執行一些操作了

 

 到這里我們已經能正常使用mongodb來執行工作了,我遇到的兩個問題在心知博客中也找到了答案。

后記

  我的mongodb的筆記本主要是記錄mongo文檔的學習情況,會不斷更新。

  

  博客會分享一些開發中的心得以及學習階段遇到的問題最后得以解決,都會堅持下去,也很開心每天都能看到博客園里有很多人分享知識。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM