1. 程式人生 > >MongoDB安裝及多實例啟動

MongoDB安裝及多實例啟動

end prot 輕松 實現 tomat 系統 數據 水平擴展 -o

MongoDB安裝及多實例啟動

MongoDB簡介

MongoDB是一款跨平臺、面向文檔的數據庫。可以實現高性能、高可用性,並且能夠輕松擴展,是一個基於分布式文件存儲的開源數據庫系統,在高負載的情況下,添加更多的節點可以保證服務器的性能。

在大數據時代中,大數據量的處理已經成了考量一個數據庫最重要的原因之一。MongoDB的一個主要目標就是盡可能的讓數據庫保持卓越的性能,這很大程度地決定了MongoDB的設計。MongoDB選擇了最大程度而利用內存資源用作緩存來換取卓越的性能,並且會自動選擇速度最快的索引來進行查詢。MongoDB盡可能精簡數據庫,將盡可能多的操作交給客戶端,這種方式也是MongoDB能夠保持卓越性能的原因之一。

MongoDB是非關系性數據庫(NoSQL)中功能最豐富,最像關系數據庫的。不采用關系模型是為了獲取更好的擴展性,MongoDB不在有“行”的概念,其運行方式主要基於兩個概念:集合(collection)和文檔(document)。

MongoDB的特點

Mongo是一個高性能,開源,無模式的文檔型數據庫,它在許多場景下可用於替代傳統的關系型數據庫或鍵/值存儲方式。

1、面向集合的存儲:適合存儲對象及JSON形式的數據。

2、MongoDB安裝簡單,提供了面向文檔的存儲功能,操作起來比較容易。

3、MongoDB提供了復制,高可用性和自動分片功能。如果負載增加(需要更多的存儲空間和更強的處理能力),它可以分布在計算機網絡中的其他節點上,這就是所謂的分片。

4、MongoDB支持豐富的查詢表達式。

5、高效的傳統存儲方式:支持二進制數據及大型對象(如照片或圖片)。

MongoDB適用領域

1、MongoDB可以為Web應用提供可擴展的高性能數據存儲解決方案。MongoDB主要適用領域有網站數據、分布式場景、數據緩存和JSON文檔格式存儲。適合大數據量、高並發、弱事務的互聯網應用,其內置的水平擴展機制提供了從幾百萬到十億級別的數據處理能力,可以很好的滿足Web2.0和移動互聯網應用數據存儲的要求。

MongoDB安裝

1、下載和安裝MongoDB及支持軟件。

我們這裏選擇的是直接下載軟件包,由於我使用的虛擬機是CentOS7並且是64位版本,所以我們選擇對應的RedHat7版本64位。下載完後經過配置可以直接使用。由於軟件包已經啟用了SSL安全加密,所以需要我們安裝openssl相關的依賴包。

技術分享圖片
技術分享圖片

[root@promote ~]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.0.tgz  
#可以直接下載
[root@promote ~]# yum install openssl openssl-devel -y  
#安裝相關依賴包
[root@promote ~]# tar xvfz mongodb-linux-x86_64-rhel70-4.0.0.tgz -C /usr/local/
#將壓縮包解壓到指定的目錄中
[root@promote ~]# mv /usr/local/mongodb-linux-x86_64-rhel70-4.0.0/ /usr/local/mongodb
#重命名軟件包,方便以後使用

2、創建數據存儲目錄,日誌存儲目錄及日誌文件

由於我們下載的是已經編譯好的軟件包,所以我們需要自行創建數據存儲目錄,日誌存儲日誌及日誌文件。

[root@promote ~]# mkdir -p /data/mongodb1
#創建數據存儲目錄
[root@promote ~]# mkdir -p /data/logs/mongodb
#創建日誌存儲目錄
[root@promote ~]# touch /data/logs/mongodb/mongodb1.log
#創建日誌文件
[root@promote ~]# chmod -R 777 /data/logs/mongodb/mongodb1.log 
#修改日誌文件權限,方便下面操作

當MongoDB處於頻繁訪問的狀態,如果shell啟動進程所占用的資源設置過低,會產生錯誤到時無法連接MongoDB。

[root@promote ~]# ulimit -n 2500    #修改shell所能啟用的最大進程數
[root@promote ~]# ulimit -u 2500    #修改shell所能打開的最大文件數

3、創建MongoDB配置文件和配置啟動參數

下載下來的軟件包沒有配置文件,這裏需要我們自行創建。

[root@promote ~]# cd /usr/local/mongodb/bin/
[root@promote bin]# vim mongodb1.conf
port=27017                                    #默認服務器端口號
dbpath=/data/mongodb1                         #數據存儲目錄,就是我們上一步創建的
logpath=/data/logs/mongodb/mongodb1.log       #日誌文件
logappend=true                                #使用追加方式寫日誌
fork=true                                     #後臺運行
maxConns=5000                                 #最大連接數

4、啟動和停止MongoDB

安裝並且配置好後就可以啟動的們的MongoDB服務了
技術分享圖片
技術分享圖片

[root@promote bin]# export PATH=$PATH:/usr/local/mongodb/bin/
#可以把MongoDB的路徑加入到環境變量,這樣可以直接使用MongoDB的相關命令
[root@promote bin]# mongod -f /usr/local/mongodb/bin/mongodb1.conf 
#mongod用於啟動服務進程,-f後面加上服務的配置文件路徑
[root@promote bin]# netstat -ntap | grep mongod     #可以查看MongoDB的進程啟動狀態
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      78984/mongo
[root@promote bin]# mongo   #可以進入到數據庫中

[root@promote bin]# mongod -f /usr/local/mongodb/bin/mongodb1.conf --shutdown
#--shutdown表示關閉MongoDB服務進程
2018-07-16T21:22:05.828+0800 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols ‘none‘
killing process with pid: 78984
[root@promote bin]# netstat -ntap | grep mongod  #沒有MongoDB進程

啟動MongoDB多實例

在單臺服務器資源充分的情況下,可以使用多實例,以便充分使用服務器資源。步驟和上面相同,再創建一組數據存儲目錄、日誌文件和配置文件。

[root@promote bin]# mkdir -p /data/mongodb2
#創建新的數據存儲目錄
[root@promote bin]# touch /data/logs/mongodb/mongodb2.log 
#創建新的日誌文件
[root@promote bin]# chmod -R 777 /data/logs/mongodb/mongodb2.log 
#賦予日誌文件對應權限
[root@promote bin]# chmod -R 777 /data/logs/mongodb/mongodb2.log 
[root@promote bin]# cp /usr/local/mongodb/bin/mongodb1.conf /usr/local/mongodb/bin/mongodb2.conf 
#復制一份新的配置文件,再修改相應的參數
port=27018                                #設置一個新的端口號
dbpath=/data/mongodb2                     #設置新的數據存儲目錄    
logpath=/data/logs/mongodb/mongodb2.log   #設置新的日誌文件
logappend=true
fork=true
maxConns=5000

[root@promote bin]# mongod -f /usr/local/mongodb/bin/mongodb2.conf #開啟新實例的進程
[root@promote bin]# mongod -f /usr/local/mongodb/bin/mongodb1.conf 
2018-07-16T21:31:16.103+0800 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols ‘none‘
about to fork child process, waiting until server is ready for connections.
forked process: 79334
child process started successfully, parent exiting
[root@promote bin]# netstat -ntap | grep mongo
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      79334/mongod        
tcp        0      0 127.0.0.1:27018         0.0.0.0:*               LISTEN      79304/mongod 
#可以看到開啟了兩個實例

MongoDB安裝及多實例啟動