Linux系統(tǒng)下Mongodb的集群部署_第1頁
Linux系統(tǒng)下Mongodb的集群部署_第2頁
Linux系統(tǒng)下Mongodb的集群部署_第3頁
Linux系統(tǒng)下Mongodb的集群部署_第4頁
Linux系統(tǒng)下Mongodb的集群部署_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、mongodb是時(shí)下流行的nosql數(shù)據(jù)庫,它的存儲(chǔ)方式是文欄式存儲(chǔ),并不是key-value 形式。關(guān)于mongodb的特點(diǎn),這里就不多介紹了,大家可以去看看官方說明: http:/docs.rn on /ma nual/今天主要來說說mongodb的三種集群方式的搭建:replica set / sharding / master-slavero這里只說明最簡(jiǎn)單的集群搭建方式(生產(chǎn)環(huán)境),如果有多個(gè)節(jié)點(diǎn)可以此 類推或者查看官方文檔。os是ubuntu_x64系統(tǒng),客八端用的是java客戶端。mongodb 版本是 mongodb-linux-x86_64-2.2.2.tgz

2、replica set中文翻譯叫做副本集,不過我并不喜歡把英文翻譯成中文,總是感覺怪怪的。其實(shí)簡(jiǎn) 單來說就是集群當(dāng)屮包含了多份數(shù)據(jù),保證主節(jié)點(diǎn)掛掉了,備節(jié)點(diǎn)能繼續(xù)提供數(shù)據(jù)服務(wù),提 供的前提就是數(shù)據(jù)需要和主節(jié)點(diǎn)一致。如下圖:zmongodb clientmongodb(m)一 mongodb- mongodb(a) i丿v/machinelmachine2machine3mongodb(m)表示主節(jié)點(diǎn),mongodb(s)表示備節(jié)點(diǎn),mongodb(a)表示仲裁節(jié)點(diǎn)。主備 節(jié)點(diǎn)存儲(chǔ)數(shù)據(jù),仲裁節(jié)點(diǎn)不存儲(chǔ)數(shù)據(jù)??蛻舳送瑫r(shí)連接主節(jié)點(diǎn)與備節(jié)點(diǎn),不連接仲裁節(jié)點(diǎn)。默認(rèn)設(shè)置下,主節(jié)點(diǎn)捉供所有增刪查改服務(wù),備節(jié)

3、點(diǎn)不提供任何服務(wù)。但是可以通過 設(shè)置使備節(jié)點(diǎn)提供查詢服務(wù),這樣就可以減少主節(jié)點(diǎn)的壓力,當(dāng)客戶端進(jìn)行數(shù)據(jù)查詢時(shí),請(qǐng) 求自動(dòng)轉(zhuǎn)到備節(jié)點(diǎn)上。這個(gè)設(shè)置叫做read preference modes,同時(shí)java客戶端提供了簡(jiǎn) 單的配置方式,可以不必直接對(duì)數(shù)據(jù)庫進(jìn)行操作。仲裁節(jié)點(diǎn)是一種特殊的節(jié)點(diǎn),它本身并不存儲(chǔ)數(shù)據(jù),主要的作用是決定哪一個(gè)備節(jié)點(diǎn) 在主節(jié)點(diǎn)掛掉之后提升為主節(jié)點(diǎn),所以客戶端不需要連接此節(jié)點(diǎn)。這里雖然只有一個(gè)備節(jié)點(diǎn), 但是仍然需要一個(gè)仲裁節(jié)點(diǎn)來提升備節(jié)點(diǎn)級(jí)別。我開始也不相信必須要有仲裁節(jié)點(diǎn),但是自 己也試過沒仲裁節(jié)點(diǎn)的話,主節(jié)點(diǎn)掛了備節(jié)點(diǎn)還是備節(jié)點(diǎn),所以咱們還是需要它的。 介紹完了集群方案,那

4、么現(xiàn)在就開始搭建了。1.建立數(shù)據(jù)文件夾一般情況下不會(huì)把數(shù)據(jù)目錄建立在mongodb的解壓目錄下,不過這里方便起見,就建在 mongodb解壓目錄下吧。plain view plaincopy1- mkdir -p /mongodb/data/master2. mkdir p /mongodb/data/slaver3. mkdir -p /mongodb/data/arbiter4. #三個(gè)目錄分別對(duì)應(yīng)主,備,仲裁節(jié)點(diǎn)2建立配置文件rti于配置比較多,所以我們將配置寫到文件里。plain view plaincopy11. #master.conf2. dbpath二/mongodb/data

5、/master3 logpath=/mongodb/log/mastenlog4 pidfilepath=/mongodb/masterpid 15 directoryperdb二true6. logappend=true7. replset=testrs8. bind_ip=1010.1481309.port=2701710. oplogsize=1000011- fork=true12. noprealloc=truelain view plaincopy1.#slaver.conf.8.9.dbpath=/mongodb/data/slaver logpath二/mon

6、godb/log/slaver.log pidfilepath=/mongodb/slaverpid directotyperdb=true logappend=true replset二testrsbind_ip=31 port=2701710. oplogsize=1000011. fork=trueplain view plaincopy1. #arbiter.conf| 2. dbpath=/mongodb/data/arbiter13 logpath二/mongodb/log/arbiterlog| 4. pidfilepath=/mongodb/arbiter

7、pid5 directoryperdb=true6. logappend二true7. replset二testrs8 bind_ip=1010.148.1329. port=2701710. oplogsize=10000111- fork=true12. noprealloc=true參數(shù)解釋:dbpath:數(shù)據(jù)存放目錄logpath:日志存放路徑pidfilepath:進(jìn)程文件,方便停止mongodbdirectoryperdb:為每一個(gè)數(shù)據(jù)庫按照數(shù)據(jù)庫名建立文件夾存放logappend:以追加的方式記錄tl志replset: replica set 的名字bindjp: mongodb

8、所綁定的ip地址port: mongodb進(jìn)程所使用的端口號(hào),默認(rèn)為27017oplogsize: mongodb操作日志文件的最大大小。單位為mb,默認(rèn)為硬盤剩余空間的5% fork:以后臺(tái)方式運(yùn)行進(jìn)程noprealloc:不預(yù)先分配存儲(chǔ)3. 啟動(dòng) mongodb進(jìn)入每個(gè)mongodb節(jié)點(diǎn)的bin目錄下java view plaincopy1./monood -f master.conf2./mongod -f slaver.conf3./mongod -f arbiter.conf注意配置文件的路徑一定要保證止確,可以是相對(duì)路徑也可以是絕對(duì)路徑。4. 配置主,備,仲裁節(jié)點(diǎn)可以通過客戶端連接

9、mongodb,也可以直接在三個(gè)節(jié)點(diǎn)屮選擇一個(gè)連接mongodb。plain view plaincopy|1. ./mongo 30:27017#ip 和 port 是某個(gè)節(jié)點(diǎn)的地址2. >use admin|3. >cfg= _id:"testrs" members: _id:0,host:'30:27017',priority:2,_id:l,host:'31:27017',priority:1,4. _id:2jhost:'32

10、:27017*,arbiteronly:true ;5. >rs.initiate(cfg)# 使配程生效cfg是可以任意的名字,當(dāng)然最好不要是mongodb的關(guān)鍵字,conf, config都可以。 最外層的d表示replica set的名字,members里包含的是所有節(jié)點(diǎn)的地址以及優(yōu)先級(jí)。 優(yōu)先級(jí)最高的即成為主節(jié)點(diǎn),即這里的30:27017。特別注意的是,對(duì)于仲裁節(jié) 點(diǎn),需要有個(gè)特別的配置arbiteronly:trueo這個(gè)千萬不能少了,不然主備模式就不能生 效。配置的生效時(shí)間根據(jù)不同的機(jī)器配置會(huì)有長(zhǎng)有短,配置不錯(cuò)的話基本上十幾秒內(nèi)就能生 效,有的配置需要一

11、兩分鐘。如果生效了,執(zhí)行rs.status()命令會(huì)看到如下信息:plain view plaincopy1- 2. hsetn : l,testrs,3. i,date" : isodate("2013-01-05t02:44:43z"),4.ystate'1 : 1,5."members":67.“_id“ : 0,8.“name” : h30:270179."health" : 1,10."state" : 1,11.hstatestrm : "primary

12、”,12."uptime" : 20013."optime" : timestamp(1357285565000, 1),14."optimedate11 : isodate(112013-01-04t07:46:05z'1),15."self" : true16.,17.18.”衛(wèi)“ :1,19."name11 : "31:27017",20."health" : 1,21."state" : 2,22.f,statestr

13、k : “secondary”,23.'uptime" : 200,24."optime" : timestamp(1357285565000, 1),25.,optimedateh : isodate(,2013-01-04t07:46:05z,)j26.nlastheartbeath : isodate("2013-01-05t02:44:42zn),27.hpingmslf : 028.,2.33.34 353637.38e39 40.pi.h_idh : 2,hnameh : ,32:27017,

14、"health" : 1,tate" : 7,tatestr'1 : "arbiter",uptime'" : 200,lastheartbeatn : isodate(lf2013-01-05t02:44:42z11),"pingms11 : 0>hokn : 1如果配置正在生效,其中會(huì)包含如下信息:plain view plaincopy|1. "statestr" : "recovering"同時(shí)可以查看對(duì)應(yīng)節(jié)點(diǎn)的日志,發(fā)現(xiàn)正在等待別的節(jié)點(diǎn)生效或者正在分配數(shù)

15、據(jù)文件。 現(xiàn)在基本上已經(jīng)完成了集群的所有搭建工作。至于測(cè)試工作,可以留給大家自己試試。一個(gè)是往主節(jié)點(diǎn)插入數(shù)據(jù),能從備節(jié)點(diǎn)查到之前插入的數(shù)據(jù)(查詢備節(jié)點(diǎn)可能會(huì)遇到某個(gè)問 題,可以白己去網(wǎng)上查查看)。二是停掉主節(jié)點(diǎn),備節(jié)點(diǎn)能變成主節(jié)點(diǎn)提供服務(wù)。三是恢復(fù) 主節(jié)點(diǎn),備節(jié)點(diǎn)也能恢復(fù)其備的角色,而不是繼續(xù)充當(dāng)主的角色。二和三都可以通過 rs.status()命令實(shí)時(shí)查看集群的變化。sharding和replica set類似,都需要一個(gè)仲裁節(jié)點(diǎn),但是sharding還需要配置節(jié)點(diǎn)和路由節(jié)點(diǎn)。 就三種集群搭建方式來說,這種是最復(fù)雜的。部署圖如下:xmongodb client-, 丿mongodb(r)mo

16、ngodb(c2)machine3mongodb(m) 丿machine4mongodb (s)mongodb(a)machi ne5machine61.啟動(dòng)數(shù)據(jù)節(jié)點(diǎn)plain view plaincopy卜2.3./mongodfork -dbpath ./data/setl/est #3./mongod fork -dbpath .</data/set2/ est #4./mongod -fork dbpath ./data/set3/1ogpath ./log/setl.log -replset togpath ./log/set2.lo

17、g -replset t-logpath .,/log/set3.1og -replset test #5決策 不存儲(chǔ)數(shù)據(jù)2啟動(dòng)配置節(jié)點(diǎn)plain view plaincopy1. ./mongod -configsvr -dbpath ./config/setl/ -port 20001 -fork -logpath./log/confl.log #02. ./mongod -configsvr -dbpath .>/config/set2/ port 20002 -fork -logpath./iog/conf2.1og #192.168.

18、4.313. 啟動(dòng)路由節(jié)點(diǎn)plain view plain copy11. ./mongos -configdb 0:20001,1:20002 -port 27017 -fork -logpath ./log/root.log #9這里我們沒有用配置文件的方式啟動(dòng),其中的參數(shù)意義大家應(yīng)該都明白。一般來說一 個(gè)數(shù)據(jù)節(jié)點(diǎn)對(duì)應(yīng)一個(gè)配置節(jié)點(diǎn),仲裁節(jié)點(diǎn)則不需要對(duì)應(yīng)的配置節(jié)點(diǎn)。注意在啟動(dòng)路由節(jié)點(diǎn)吋, 要將配置節(jié)點(diǎn)地址寫入到啟動(dòng)命令里。4. 配置 replica set這里可能會(huì)有點(diǎn)奇怪為什么sharding會(huì)需要配置replica set

19、o其實(shí)想想也能明白,多 個(gè)節(jié)點(diǎn)的數(shù)據(jù)肯定是相關(guān)聯(lián)的,如果不配一個(gè)replica set,怎么標(biāo)識(shí)是同一個(gè)集群的呢。 這也是人家mongodb的規(guī)定,咱們還是遵守吧。配置方式和之前所說的一樣,定一個(gè)cfg, 然后初始化配置。plain view plain copy11- ./mongo 3:27017 #ip 和 port 是某個(gè)節(jié)點(diǎn)的地址2. >use admin13 >cfg= _id: "testrs11 丿 members: _id:0?host: 1192 168.4.43:27017', priority:2, _id:1,hos

20、t:*4:27017',priority:1,4. _id:2$host:'192.168445:27017'arbiteronly:true ;5 >rs.initiate(cfg)#使配置生效5配置 shardingplain view plaincopy111. ./mongo 9:27017#這里必須連接路由節(jié)點(diǎn)2. >sh.addshard("test/3:27017") #test 表示 replica set 的名字 當(dāng)把主節(jié)點(diǎn) 添加到shard以后,會(huì)白動(dòng)找

21、到set里的主,備,決策節(jié)點(diǎn)p. >db.runcommand(enablesharding:"diameter_test")#diameter_test is database name4. >db.runcommand( shardcollection: "diameter_test.dccadccrtest",key:"_av psessionld":1)第一個(gè)命令很容易理解,第二個(gè)命令是對(duì)需要進(jìn)行shading的數(shù)據(jù)庫進(jìn)行配置,第三 個(gè)命令是對(duì)需要進(jìn)行sharding的collection進(jìn)行配置,這里的dcca_dccr_test即為 collection的名字。另外還有個(gè)key,這個(gè)是比較關(guān)鍵的東西,對(duì)于查詢效率會(huì)有很大的影 響,具體可以查看shard key overview到這里sharding也已經(jīng)搭建完成了,以上只是最簡(jiǎn)單的搭建方式,其中某些配置仍然 使用的是默認(rèn)配置。如果設(shè)置不當(dāng),會(huì)導(dǎo)致效率界常低下,所以建議大家多看看官方文檔再 進(jìn)行默認(rèn)配置的修改。master-slaver 這個(gè)是最簡(jiǎn)答的集群搭建,不過準(zhǔn)確說也不能算是集群,只能說是主備。并且官方

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論