NoSQL,指的是非關系型的數據庫。NoSQL有時也稱作Not Only SQL的縮寫,是對不同于傳統的關系型數據庫的數據庫管理系統的統稱。
創新互聯公司2013年開創至今,先為東河等服務建站,東河等地企業,進行企業商務咨詢服務。為東河企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。NoSQL用于超大規模數據的存儲。(例如谷歌或Facebook每天為他們的用戶收集萬億比特的數據)。這些類型的數據存儲不需要固定的模式,無需多余操作就可以橫向擴展。
今天我們可以通過第三方平臺(如:Google,Facebook等)可以很容易的訪問和抓取數據。用戶的個人信息,社交網絡,地理位置,用戶生成的數據和用戶操作日志已經成倍的增加。我們如果要對這些用戶數據進行挖掘,那SQL數據庫已經不適合這些應用了, NoSQL數據庫的發展也卻能很好的處理這些大的數據。
NoSQL的優點
高可擴展性 可以橫向擴展也可以縱向擴展
分布式計算
低成本高性能
架構的靈活性,半結構化數據
沒有復雜的關系
MongoDB 是一個基于分布式文件存儲的數據庫。由C++語言編寫。旨在為WEB應用提供可擴展的高性能數據存儲解決方案。
MongoDB 是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫.支持類似于面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。所以這個非常方便,我們可以用sql操作MongoDB,從關系型數據庫遷移過來,開發人員學習成本會大大減少。如果再對底層的sql API做一層封裝,開發基本可以感覺不到mongodb和關系型數據庫的區別。同樣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的可執行文件路徑加到PATH變量中(~/.bash_profile)
PATH=$PATH:$HOME/bin:/usr/local/mongodb/bin2. 創建所mongodb啟動需要的路徑和文件
mkdir /data/db #創建存放mongodb的數據文件夾 mkdir /usr/local/mongodb/logs/ #創建存放mongodb日志的文件夾 touch /usr/local/mongodb/logs/mongodb.log #創建存放mongodb的日志文件3. 啟動mongodb服務。命令窗口直接執行就行
[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 } >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,創建服務器進程 --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套接字監聽 --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# 關閉偏執為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 } >我們都知道,這種單實例的配置只適合學習開發時使用,生產肯定不會這么使用,不然單節點掛掉整條數據流全丟了
接下來一篇我們繼續學習mongodb主從的配置···
另外有需要云服務器可以了解下創新互聯cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
分享題目:高可用mongodb集群的學習記錄(一安裝配置MongoDB-創新互聯
網頁URL:http://m.newbst.com/article8/hjcop.html
成都網站建設公司_創新互聯,為您提供域名注冊、品牌網站設計、建站公司、網站內鏈、虛擬主機、網站排名
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯