溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

高可用mongodb集群的學習記錄(一安裝配置MongoDB

發(fā)布時間:2020-02-29 22:57:30 來源:網絡 閱讀:2066 作者:青苗飛揚 欄目:MongoDB數據庫

一安裝配置MongoDB

一、概述

NoSQL,指的是非關系型的數據庫。NoSQL有時也稱作Not Only SQL的縮寫,是對不同于傳統的關系型數據庫的數據庫管理系統的統稱。

NoSQL用于超大規(guī)模數據的存儲。(例如谷歌或Facebook每天為他們的用戶收集萬億比特的數據)。這些類型的數據存儲不需要固定的模式,無需多余操作就可以橫向擴展。

今天我們可以通過第三方平臺(如:Google,Facebook等)可以很容易的訪問和抓取數據。用戶的個人信息,社交網絡,地理位置,用戶生成的數據和用戶操作日志已經成倍的增加。我們如果要對這些用戶數據進行挖掘,那SQL數據庫已經不適合這些應用了, NoSQL數據庫的發(fā)展也卻能很好的處理這些大的數據。

 

NoSQL的優(yōu)點

高可擴展性 可以橫向擴展也可以縱向擴展

分布式計算

低成本高性能

架構的靈活性,半結構化數據

沒有復雜的關系

MongoDB 是一個基于分布式文件存儲的數據庫。由 C++ 語言編寫。旨在為 WEB 應用提供可擴展的高性能數據存儲解決方案。

MongoDB 是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫.支持類似于面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。所以這個非常方便,我們可以用sql操作MongoDB,從關系型數據庫遷移過來,開發(fā)人員學習成本會大大減少。如果再對底層的sql API做一層封裝,開發(fā)基本可以感覺不到mongodb和關系型數據庫的區(qū)別。同樣MongoDB也是號稱自己能夠快速搭建一個高可用可擴展的的分布式集群 

二、安裝配置與應用

MongoDB可以在windows上安裝使用,同樣支持linux平臺。我這里選的是linux平臺安裝。

1. 首先下載并解壓安裝包

curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz    # 下載
tar  -zxvf mongodb-linux-x86_64-3.0.6.tgz                  # 解壓
mv  mongodb-linux-x86_64-3.0.6/  /usr/local/mongodb            # 將解壓包拷貝到指定目錄


MongoDB的可執(zhí)行文件路徑加到PATH變量中(~/.bash_profile)

PATH=$PATH:$HOME/bin:/usr/local/mongodb/bin


2. 創(chuàng)建所mongodb啟動需要的路徑和文件

mkdir /data/db #創(chuàng)建存放mongodb的數據文件夾
mkdir /usr/local/mongodb/logs/ #創(chuàng)建存放mongodb日志的文件夾
touch /usr/local/mongodb/logs/mongodb.log #創(chuàng)建存放mongodb的日志文件


3. 啟動mongodb服務。命令窗口直接執(zhí)行就行

[root@DB ~]# mongod 
2017-11-14T13:14:19.809+0800 I JOURNAL  [initandlisten] journal dir=/data/db/journal
2017-11-14T13:14:19.809+0800 I JOURNAL  [initandlisten] recover : no journal files present, no recovery needed
2017-11-14T13:14:19.815+0800 I JOURNAL  [durability] Durability thread started
2017-11-14T13:14:19.815+0800 I JOURNAL  [journal writer] Journal writer thread started
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] MongoDB starting : pid=4287 port=27017 dbpath=/data/db 64-bit host=DB
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] 
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] 
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] 
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] 
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 16384 processes, 65536 files. Number of processes should be at least 32768 : 0.5 times number of files.
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] 
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] db version v3.0.6
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] git version: 1ef45a23a4c5e3480ac919b28afcba3c615488f2
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] build info: Linux build6.ny.cbi.10gen.cc 2.6.32-431.3.1.el6.x86_64 #1 SMP Fri Jan 3 21:39:27 UTC 2014 x86_64 BOOST_LIB_VERSION=1_49
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] allocator: tcmalloc
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] options: {}
2017-11-14T13:14:19.849+0800 I NETWORK  [initandlisten] waiting for connections on port 27017


可以看到mongodb服務進程以及啟動,開啟了27017端口等待連接了

另開一個命令窗口,使用mongo命令可以與mongodb進行交互。由于它是一個JavaScript Shell,可以輸入簡單的算術運算測試一下:

[root@DB mongodb]# mongo 
MongoDB shell version: 3.0.6
connecting to: test
Server has startup warnings: 
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] 
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] 
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] 
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] 
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 16384 processes, 65536 files. Number of processes should be at least 32768 : 0.5 times number of files.
2017-11-14T13:14:19.834+0800 I CONTROL  [initandlisten] 
> 3+2
5


也可以插入一些簡單數據,查詢驗證:

> db.a.insert({a:1})
WriteResult({ "nInserted" : 1 })
> db.a.find()
{ "_id" : ObjectId("5a0a7fa7766decd974b3ad3f"), "a" : 1 }
>


三、mongodb啟動命令參數說明

mongod的主要參數有:

 

--quiet# 安靜輸出
--port arg# 指定服務端口號,默認端口27017
--bind_ip arg# 綁定服務IP,若綁定127.0.0.1,則只能本機訪問,不指定默認本地所有IP
--logpath arg# 指定MongoDB日志文件,注意是指定文件不是目錄
--logappend# 使用追加的方式寫日志
--pidfilepath arg# PID File 的完整路徑,如果沒有設置,則沒有PID文件
--keyFile arg# 集群的私鑰的完整路徑,只對于Replica Set 架構有效
--unixSocketPrefix arg# UNIX域套接字替代目錄,(默認為 /tmp)
--fork# 以守護進程的方式運行MongoDB,創(chuàng)建服務器進程
--auth# 啟用驗證
--cpu# 定期顯示CPU的CPU利用率和iowait
--dbpath arg# 指定數據庫路徑
--diaglog arg# diaglog選項 0=off 1=W 2=R 3=both 7=W+some reads
--directoryperdb# 設置每個數據庫將被保存在一個單獨的目錄
--journal# 啟用日志選項,MongoDB的數據操作將會寫入到journal文件夾的文件里
--journalOptions arg# 啟用日志診斷選項
--ipv6# 啟用IPv6選項
--jsonp# 允許JSONP形式通過HTTP訪問(有安全影響)
--maxConns arg# 最大同時連接數 默認2000
--noauth# 不啟用驗證
--nohttpinterface# 關閉http接口,默認關閉27018端口訪問
--noprealloc# 禁用數據文件預分配(往往影響性能)
--noscripting# 禁用腳本引擎
--notablescan# 不允許表掃描
--nounixsocket# 禁用Unix套接字監(jiān)聽
--nssize arg (=16)# 設置信數據庫.ns文件大小(MB)
--objcheck# 在收到客戶數據,檢查的有效性,
--profile arg# 檔案參數 0=off 1=slow, 2=all
--quota# 限制每個數據庫的文件數,設置默認為8
--quotaFiles arg# number of files allower per db, requires --quota
--rest# 開啟簡單的rest API
--repair# 修復所有數據庫run repair on all dbs
--repairpath arg# 修復庫生成的文件的目錄,默認為目錄名稱dbpath
--slowms arg (=100)# value of slow for profile and console log
--smallfiles# 使用較小的默認文件
--syncdelay arg (=60)# 數據寫入磁盤的時間秒數(0=never,不推薦)
--sysinfo# 打印一些診斷系統信息
--upgrade# 如果需要升級數據庫  * Replicaton 參數
 
--------------------------------------------------------------------------------
 
--fastsync# 從一個dbpath里啟用從庫復制服務,該dbpath的數據庫是主庫的快照,可用于快速啟用同步
--autoresync# 如果從庫與主庫同步數據差得多,自動重新同步,
--oplogSize arg# 設置oplog的大小(MB)  * 主/從參數
 
--------------------------------------------------------------------------------
 
--master# 主庫模式
--slave# 從庫模式
--source arg# 從庫 端口號
--only arg# 指定單一的數據庫復制
--slavedelay arg# 設置從庫同步主庫的延遲時間  * Replica set(副本集)選項:
 
--------------------------------------------------------------------------------
 
--replSet arg# 設置副本集名稱  * Sharding(分片)選項
 
--------------------------------------------------------------------------------
--configsvr# 聲明這是一個集群的config服務,默認端口27019,默認目錄/data/configdb
--shardsvr# 聲明這是一個集群的分片,默認端口27018
--noMoveParanoia# 關閉偏執(zhí)為moveChunk數據保存
 
可以把上述參數都寫進mongodb.conf配置文件里:
[root@DB mongodb]# cat mongodb.conf 
dbpath=/data/db
logpath=/usr/local/mongodb/logs/mongodb.log
logappend=true
port=27017
fork=true
auth=false
nohttpinterface=false
bind_ip=192.168.221.160
journal=true
quiet=true


 

啟動的時候使用-f參數引用這個位置即可

[root@DB mongodb]# mongod -f /usr/local/mongodb/mongodb.conf 
about to fork child process, waiting until server is ready for connections.
forked process: 4319
child process started successfully, parent exiting
[root@DB mongodb]# ps -ef  |grep mongo
root       4319      1  1 13:36 ?        00:00:00 mongod -f /usr/local/mongodb/mongodb.conf
[root@DB mongodb]# mongo 192.168.221.160 
MongoDB shell version: 3.0.6
connecting to: 192.168.221.160/test
Server has startup warnings: 
2017-11-14T13:36:25.213+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2017-11-14T13:36:25.213+0800 I CONTROL  [initandlisten] 
2017-11-14T13:36:25.214+0800 I CONTROL  [initandlisten] 
2017-11-14T13:36:25.214+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2017-11-14T13:36:25.214+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2017-11-14T13:36:25.214+0800 I CONTROL  [initandlisten] 
2017-11-14T13:36:25.214+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2017-11-14T13:36:25.214+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2017-11-14T13:36:25.214+0800 I CONTROL  [initandlisten] 
2017-11-14T13:36:25.214+0800 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 16384 processes, 65536 files. Number of processes should be at least 32768 : 0.5 times number of files.
2017-11-14T13:36:25.214+0800 I CONTROL  [initandlisten] 
> db.a.find()
{ "_id" : ObjectId("5a0a7fa7766decd974b3ad3f"), "a" : 1 }
>


我們都知道,這種單實例的配置只適合學習開發(fā)時使用,生產肯定不會這么使用,不然單節(jié)點掛掉整條數據流全丟了

接下來一篇我們繼續(xù)學習mongodb主從的配置···


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI