安裝
-
下載mongodb的版本,兩點注意
- 根據業界規則,偶數爲穩定版,如3.2.X;奇數爲開發版,如3.3.X
- 32bit的mongodb最大隻能存放2G的數據,64bit就沒有限制
-
MongoDB官網安裝包下載地址:http://www.mongodb.org/downloads
-
MongoDB安裝文檔:https://docs.mongodb.com/getting-started/shell/installation/
-
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)