Ubuntu中MongoDB的安裝

 

安裝

python@ubuntu:~$ sudo apt-get install mongodb

--

使用MongoDB,需要先啓動服務端,再使用客戶端連接數據庫。

服務端

MongoDB 默認的存儲數據目錄爲 /data/db,默認端口27017

  • 服務的命令爲mongod,可以通過help查看所有參數
python@ubuntu:~$ mongod --help
  • 相關文件存放路徑:默認各個文件存放路徑如下所示:
  • 可執行文件存放路徑:/usr/bin/mongod 和 /usr/bin/mongo
  • 數據庫文件存放路徑:/data/db
  • 日誌文件存放路徑:/var/log/mongodb/mongod.log
  • 配置文件存放路徑:/etc/mongod.conf

啓動注意事項:

1. 首次啓動:

  • 啓動MongoDB服務: sudo mongod

報出如下錯誤,表示默認的存儲數據目錄 /data/db 不存在:

[initandlisten] exception in initAndListen: 29 Data directory /data/db not found., terminating

  • 創建 /data目錄和 /data/db 目錄,並指定 讀/寫/執行 權限
python@ubuntu:~$ sudo mkdir -p /data/db
python@ubuntu:~$ sudo chmod 777 /data/db

2. 再次啓動:

  • 再次啓動MongoDB服務: sudo mongod

啓動成功,但是可能會有如下警告:

#### 此乃 Warning 1:
[initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
[initandlisten] **        We suggest setting it to 'never'
[initandlisten] 
[initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
[initandlisten] **        We suggest setting it to 'never'

#### 此乃 Warning 2:
[initandlisten] ** WARNING: soft rlimits too low. rlimits set to 1024 processes, 64000 files. Number of processes should be at least 32000 : 0.5 times number of files.

#### 此乃 Warning 3:
[initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.

注意:這裏的三個Warning並非必須處理,大家瞭解即可:

Warning 1:

[initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.[initandlisten] ** We suggest setting it to 'never' [initandlisten] [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. [initandlisten] ** We suggest setting it to 'never'

Linux的內存分配默認由內核動態分配,而不是由程序自行管理。而MongoDB對內存佔用有那麼點...嚴重,所以爲了防止MongoDB佔用內存過大而被內核"管理",官方推薦關閉動態分配。

默認"always"表示允許動態分配,對應的"never"就是不允許,所以我們將這兩個文件內容修改爲"naver"後就沒有warning了。

# Ctrl + c 退出 MongoDB 數據庫服務
# 然後進入 root 用戶下,執行修改命令

python@ubuntu:~$ sudo su
[sudo] python 的密碼: 

root@ubuntu:~# sudo echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
root@ubuntu:~# sudo echo "never" >  /sys/kernel/mm/transparent_hugepage/defrag

實際上,除非網站DBA對數據庫性能有極限要求,在通常情況下系統動態分配的內存頁大小足夠我們正常使用,而且更能優化整個系統,所以一般不必理會這個warning。而且這樣只是臨時修改Linux內核的設置,在Linux服務器重啓後則會失效。

Warning 2:

[initandlisten] ** WARNING: soft rlimits too low. rlimits set to 1024 processes, 64000 files. Number of processes should be at least 32000 : 0.5 times number of files.

這個WARNING(如果有的話)含義爲: 表示默認分配給MongoDB的進程和文件數量限制過低,需要重新分配值:

  • mongodb當前限制:1024 processes, 64000 files
  • mongodb建議要求:processes = 0.5*files=32000(至少)

咱們學習階段默認用不着這麼多的進程和文件,所以也可以不必理會。

# 打開 相關配置文件:
root@ubuntu:~# vi /etc/security/limits.conf

# 在打開的 文件最下方,添加,然後保存退出
mongod  soft  nofile  64000
mongod  hard  nofile  64000
mongod  soft  nproc  32000
mongod  hard  nproc  32000

Warning 3:

[initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.

意思是我們在用root權限做這些事,理論上是不安全的。我們可以通過附加--auth參數,來使用用戶認證來處理這個情況,這個後面會講到。

3. 再再次啓動:

  • 再再次啓動MongoDB服務: sudo mongod

啓動後查看進程,以確定是否啓動成功

python@ubuntu:~$ ps aux | grep mongod
  • 如果進程中沒有mongod的項則沒有啓動成功,可以通過查看日誌來確定錯誤原因,默認日誌文件爲 /var/log/mongodb/mongod.log,最新的信息在最後面顯示。

客戶端

  • 客戶端命令爲 mongo,可以通過help查看所有參數。
  • 這個shell即是mongodb的客戶端,用來對MongoDB進行操作和管理的交互式環境。
python@ubuntu:~$ mongo --help
  • 終端退出連接
> exit

(或Ctrl+C)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章