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ù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

4、么現(xiàn)在就開始搭建了。1.建立數(shù)據(jù)文件夾一般情況下不會把數(shù)據(jù)目錄建立在mongodb的解壓目錄下,不過這里方便起見,就建在 mongodb解壓目錄下吧。plain view plaincopy1- mkdir -p /mongodb/data/master2. mkdir p /mongodb/data/slaver3. mkdir -p /mongodb/data/arbiter4. #三個目錄分別對應主,備,仲裁節(jié)點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:進程文件,方便停止mongodbdirectoryperdb:為每一個數(shù)據(jù)庫按照數(shù)據(jù)庫名建立文件夾存放logappend:以追加的方式記錄tl志replset: replica set 的名字bindjp: mongodb

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

9、mongodb,也可以直接在三個節(jié)點屮選擇一個連接mongodb。plain view plaincopy|1. ./mongo 30:27017#ip 和 port 是某個節(jié)點的地址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是可以任意的名字,當然最好不要是mongodb的關鍵字,conf, config都可以。 最外層的d表示replica set的名字,members里包含的是所有節(jié)點的地址以及優(yōu)先級。 優(yōu)先級最高的即成為主節(jié)點,即這里的30:27017。特別注意的是,對于仲裁節(jié) 點,需要有個特別的配置arbiteronly:trueo這個千萬不能少了,不然主備模式就不能生 效。配置的生效時間根據(jù)不同的機器配置會有長有短,配置不錯的話基本上十幾秒內就能生 效,有的配置需要一

11、兩分鐘。如果生效了,執(zhí)行rs.status()命令會看到如下信息: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如果配置正在生效,其中會包含如下信息:plain view plaincopy|1. "statestr" : "recovering"同時可以查看對應節(jié)點的日志,發(fā)現(xiàn)正在等待別的節(jié)點生效或者正在分配數(shù)

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

16、ngodb(c2)machine3mongodb(m) 丿machine4mongodb (s)mongodb(a)machi ne5machine61.啟動數(shù)據(jù)節(jié)點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決策 不存儲數(shù)據(jù)2啟動配置節(jié)點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. 啟動路由節(jié)點plain view plain copy11. ./mongos -configdb 0:20001,1:20002 -port 27017 -fork -logpath ./log/root.log #9這里我們沒有用配置文件的方式啟動,其中的參數(shù)意義大家應該都明白。一般來說一 個數(shù)據(jù)節(jié)點對應一個配置節(jié)點,仲裁節(jié)點則不需要對應的配置節(jié)點。注意在啟動路由節(jié)點吋, 要將配置節(jié)點地址寫入到啟動命令里。4. 配置 replica set這里可能會有點奇怪為什么sharding會需要配置replica set

19、o其實想想也能明白,多 個節(jié)點的數(shù)據(jù)肯定是相關聯(lián)的,如果不配一個replica set,怎么標識是同一個集群的呢。 這也是人家mongodb的規(guī)定,咱們還是遵守吧。配置方式和之前所說的一樣,定一個cfg, 然后初始化配置。plain view plain copy11- ./mongo 3:27017 #ip 和 port 是某個節(jié)點的地址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é)點2. >sh.addshard("test/3:27017") #test 表示 replica set 的名字 當把主節(jié)點 添加到shard以后,會白動找

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

溫馨提示

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

評論

0/150

提交評論