MongoDB是由C++語言編寫的,是一個基於分佈式文件存儲的開源數據庫系統。mysql
在高負載的狀況下,添加更多的節點,能夠保證服務器性能。本文是講述把MongoDB社區版安裝到新睿雲CentOS7服務器上,按照AGPL的要求,社區版自用免費,若是要分發是必須使用企業版的。git
1、添加MongoDB資料庫
mongodb-org默認狀況下該軟件包不存在CentOS7的源倉庫中。因此咱們須要把其先放到倉庫中。github
使用vi編輯器爲建立.repo文件yum,爲CentOS的軟件包管理實用程序:sql
sudo vi/etc/yum.repos.d/mongodb-org.repomongodb
而後,訪問MongoDB文檔的「在Red Hat上安裝」部分,並添加資料庫該文件的最新穩定版本的信息:shell
/etc/yum.repos.d/mongodb-org.repo數據庫
[mongodb-org-3.4]json
name=MongoDB Repository服務器
baseurl=https://repo.mongodb.org/yum/...$releasever/mongodb-org/3.4/x86_64/app
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/stati...
保存並關閉文件。
在繼續以前,咱們應該驗證MongoDB資料庫yum實用程序中存在。該repolist命令顯示已啓用的列表倉庫:
yum repolist
Output
...
repo id repo name
base/7/x86_64 CentOS-7-Base
extras/7/x86_64 CentOS-7-Extras
mongodb-org-3.2/7/x86_64 MongoDB Repository
updates/7/x86_64 CentOS-7-Updates
...
隨着MongoDB Repository到位,讓咱們繼續安裝。
2、安裝MongoDB數據庫
咱們能夠mongodb-org從第三方安裝軟件包資料庫使用該yum實用程序。
sudo yum install mongodb-org
有兩個Is this ok[y/N]:提示。第一個容許安裝MongoDB軟件包,第二個容許導入GPG密鑰。MongoDB的發佈者對其軟件進行簽名,並yum使用密鑰來確認所下載軟件包的完整性。在每一個提示下,鍵入Y,而後ENTER按鍵。
接下來,使用該systemctl實用程序啓動MongoDB服務:
sudo systemctl start mongod
儘管咱們不會在本教程中使用它們,可是您也可使用reload和stop命令更改MongoDB服務的狀態。
該reload命令要求mongod進程讀取配置文件/etc/mongod.conf,並應用任何更改而無需從新啓動。
sudo systemctl reload mongod
該stop命令將暫停全部正在運行的mongod進程。
sudo systemctl stop mongod
該systemctl實用程序在執行start命令後沒有提供結果,可是咱們能夠經過mongod.log使用如下tail命令查看文件末尾來檢查服務是否已啓動:
sudo tail/var/log/mongodb/mongod.log
Output
...
[initandlisten]waiting for connections on port 27017
等待鏈接的輸出確認MongoDB已成功啓動,咱們可使用MongoDB Shell訪問數據庫服務器:
mongo
注意:啓動MongoDB Shell時,您可能會看到以下警告:
**WARNING:soft rlimits too low.rlimits set to 4096 processes,64000 files.Number of processes should be at least 32000:0.5 times number of files.
MongoDB是一個線程化的應用程序。它能夠啓動其餘流程來處理其工做量。該警告指出,要使MongoDB最有效,它的進程數是受權的加速應該是它在任何給定時間能夠打開的文件數量的一半。要解決警告,請經過編輯文件processes來更改soft rlimit值:mongod20-nproc.conf
sudo vi/etc/security/limits.d/20-nproc.conf
將如下行添加到文件末尾:
/etc/security/limits.d/20-nproc.conf
...
mongod soft nproc 32000
爲了使新限制適用於MongoDB,請使用systemctl實用程序將其從新啓動:
sudo systemctl restart mongod
以後,當您鏈接到MongoDB Shell時,該警告應該再也不存在。
若是要與MongoDB進行交互,您截圖使用db.help()方法的輸出,該方法提供了db對象的方法列表。
db.help()
Output
DB methods:
db.adminCommand(nameOrDocument)-switches to'admin'db,and runs command[just calls db.runCommand(...)]
db.auth(username,password)
db.cloneDatabase(fromhost)
db.commandHelp(name)returns the help for the command
db.copyDatabase(fromdb,todb,fromhost)
db.createCollection(name,{size:...,capped:...,max:...})
db.createUser(userDocument)
db.currentOp()displays currently executing operations in the db
db.dropDatabase()
...
讓mongod進程在後臺運行,可是使用如下exit命令退出shell:
exit
Output
Bye
3、驗證MongoDB啓動
若是數據庫安裝失敗,應用程序沒法運行,因此咱們將確保MongoDB守護程序已經啓動。
使用該systemctl實用工具檢查其啓動狀態:
systemctl is-enabled mongod;echo$?
輸出爲零表示已啓用守護程序,這樣符合咱們的預期。可是,若是數據安裝不徹底或者失敗則啓動程序能夠不會出現或者殘缺不全。
Output
...
enabled
0
若是啓動程序啓動但運行的不完成,請使用該systemctl實用工具啓用它:
sudo systemctl enable mongod
如今,咱們有了一個正在運行的MongoDB實例,它將在系統重啓後自動啓動。
4、導入示例數據集(可選)
與其餘數據庫服務器不一樣,MongoDB的數據庫中沒有數據test測試數據集。所以咱們將從「MongoDB入門」文檔的「導入示例數據集」部分下載示例數據集。JSON文檔集合,咱們將使用它們來練習與MongoDB的交互並避免對敏感數據形成傷害。
進入可寫的目錄:
cd/tmp
使用curl命令和MongoDB中的連接下載JSON文件:
curl-LO https://raw.githubusercontent...
該mongoimport命令會將數據插入測試數據庫。該--db標誌定義了要使用的數據庫,而--collection標誌則指定了將信息存儲在數據庫中的位置,而且--file標誌告訴命令在哪一個文件上執行導入操做:
mongoimport--db test--collection restaurants--file/tmp/primer-dataset.json
輸出確認從primer-dataset.json文件中導入數據:
Output
connected to:localhost
imported 25359 documents
放置好樣本數據集以後,咱們將對其進行查詢。
從新啓動MongoDB Shell:
mongo
Shell test默認選擇數據庫,這是咱們導入數據的地方。
使用方法查詢餐廳集合,find()以顯示數據集中全部餐廳的列表。因爲該集合包含超過25,000個條目,所以請使用可選limit()方法將查詢的輸出減小到指定的數量。此外,該pretty()方法使信息更人性化-可讀的與換行符和縮進。
db.restaurants.find().limit(1).pretty()
Output
{
"_id":ObjectId("57e0443b46af7966d1c8fa68"),
"address":{
"building":"1007",
"coord":[
-73.856077,
40.848447
],
"street":"Morris Park Ave",
"zipcode":"10462"
},
"borough":"Bronx",
"cuisine":"Bakery",
"grades":[
{
"date":ISODate("2014-03-03T00:00:00Z"),
"grade":"A",
"score":2
},
{
"date":ISODate("2013-09-11T00:00:00Z"),
"grade":"A",
"score":6
},
{
"date":ISODate("2013-01-24T00:00:00Z"),
"grade":"A",
"score":10
},
{
"date":ISODate("2011-11-23T00:00:00Z"),
"grade":"A",
"score":9
},
{
"date":ISODate("2011-03-10T00:00:00Z"),
"grade":"B",
"score":14
}
],
"name":"Morris Park Bake Shop",
"restaurant_id":"30075445"
}
您能夠繼續使用樣本數據集來熟悉本身使用MongoDB或使用如下db.restaurants.drop()方法將其刪除:
db.restaurants.drop()
最後,使用如下exit命令退出shell:
exit
Output
Bye
按照本文示例您能夠配置而且應用MongoDB,若是您想進一步的深刻了解更多數據庫的使用辦法能夠閱讀《postgresql和mysql:性能、語法、功能有哪些差別?》