MongoDB數(shù)據(jù)集群驗(yàn)證_第1頁
MongoDB數(shù)據(jù)集群驗(yàn)證_第2頁
MongoDB數(shù)據(jù)集群驗(yàn)證_第3頁
MongoDB數(shù)據(jù)集群驗(yàn)證_第4頁
MongoDB數(shù)據(jù)集群驗(yàn)證_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

MongoDB數(shù)據(jù)集群驗(yàn)證驗(yàn)證目的mongodb是一個(gè)文件分布式數(shù)據(jù)庫,需要驗(yàn)證一下在不同數(shù)量的機(jī)器上配置安裝等工作,來驗(yàn)證集群的可靠性;驗(yàn)證場景集群環(huán)境搭建、數(shù)據(jù)庫的CRUD操作;添加新節(jié)點(diǎn)操作;刪除節(jié)點(diǎn);數(shù)據(jù)分片操作;驗(yàn)證流程Mongodb的分布式存儲、計(jì)算都是基于集群架構(gòu)上通過業(yè)務(wù)表分片存儲來實(shí)現(xiàn)的,下文將基于兩臺Radhat5.4的機(jī)器環(huán)境詳細(xì)驗(yàn)證集群搭建、維護(hù)方法。集群配置集群架構(gòu)數(shù)據(jù)庫集群是基于多臺物理機(jī)器并通過Shard服務(wù)器、配置服務(wù)器、路由進(jìn)程三個(gè)服務(wù)來實(shí)現(xiàn)的。詳細(xì)如下:Shard服務(wù)器(ShardServer)Shard服務(wù)器即存儲實(shí)際數(shù)據(jù)的分片,每個(gè)Shard可以是一個(gè)Mongodb實(shí)例,也可以是一組Mongodb實(shí)例構(gòu)成的Replicasets。本次驗(yàn)證都是基于單個(gè)Mongodb實(shí)例。>配置服務(wù)器(ConfigServer)配置服務(wù)器主要記錄集群環(huán)境的配置信息,以及每個(gè)集合的分片規(guī)則信息。路由進(jìn)程(RouteServer)路由進(jìn)程是客戶端連接集群數(shù)據(jù)庫的入口。用于接收、分發(fā)、反饋客戶端的查詢、更新等數(shù)據(jù)操作。驗(yàn)證集群是基于120、248兩臺redhat5.4的機(jī)器,架構(gòu)圖如下:Sh宜d服務(wù)器(120機(jī)器)Shard服務(wù)器(248機(jī)器)客戶端請求ClientSharing服務(wù)器、配置服務(wù)器、路由進(jìn)程的配置方法如下:3.1.2.啟動(dòng)Shard服務(wù)驗(yàn)證環(huán)境中的ShardServer分別為248機(jī)器上的Mongodb實(shí)例和120機(jī)器上的Mongodb實(shí)例。啟動(dòng)代碼如下:啟動(dòng)120機(jī)器MongoDB服務(wù):./mongod..--dbpath=/home/user/mongodb/db..--logpath=/home/user/mongodb/db/mongdb.log..--port20000--shardsvrfork啟動(dòng)248機(jī)器MongoDB服務(wù):./mongod..--dbpath=/home/user/mongodb/db..--logpath=/home/user/mongodb/db/mongdb.log..--port20000--shardsvrfork啟動(dòng)成功后如下截圖::reot臼1ocaIhost}jin]#-/mongod--dinpaiLh=/hoitE/ustr/xidngodtzi/lUj一一logpat.h=/hone廠lUjlevs1loLiningLallijputLfD!ngtn:/home/user/rnuncodti/dh/inn-igdb.1jgLucfile[/home/us=r/racng3db/ellj/工i口ncdlj-Log]exists;cupiedtutempor;=ryfile[/:±>=>izkedprecess:10984childprocessstarted^uc?essfully^parentediting[r匚口七&L□i二氏Ihci31:birt]#啟動(dòng)參數(shù)說明:--dbpath:指定數(shù)據(jù)文件路徑、--logpath:指定日志文件路徑、--port:執(zhí)行端口、--shardsvr:指定為集群方式、--fork:后臺運(yùn)行。3.1.3.啟動(dòng)配置服務(wù)ConfigServer需在集群中指定的某臺機(jī)器上啟動(dòng),驗(yàn)證環(huán)境中都基于248機(jī)器上。啟動(dòng)命令如下:./mongod..一configsvr..一port..30000..--dbpath=/home/user/mongob/config..--logpath=/home/user/mongodb/db/config.logfork啟動(dòng)成功后如下截圖:[raatElacalhcEtIzir]#-/tranqud一一cotifigsvr—port3DDDD一一dbph=「hoine/user/mong□db/car.fig一一1匚cfsth=/hoire/user/iriongodb/dfo/二二infig?L口g--forkdhItvt1Icckircenabled:1alloutputcciectc:/hotre/user/ironjrodb/db/二zmfig.loglarkedjraceEE:llCOflagflit[/honE/l;etr/n□□□□db/db『confijt,exists;copied,totemporaryfi_e[/hamt/user/marcodlz/dt/ccnfiq.log.2012-36-27121-25-DB]childprace^^=t;=rtedsuccessfulp;arentexiting[raatElacalhcEttin]#啟動(dòng)參數(shù)說明:--dbpath:指定集群配置文件存放路徑、--logpath:指定日志文件路徑、--port:執(zhí)行端口、--fork:后臺運(yùn)行。3.1.4.啟動(dòng)路由進(jìn)程RouteProcess需在集群中指定的某臺機(jī)器上啟動(dòng),驗(yàn)證環(huán)境中都基于248機(jī)器上。啟動(dòng)命令如下:./mongos--port40000--configdb192.168.84.248:30000--chunkSize20--logpath=/home/user/mongodb/db/mongos.lo-fork啟動(dòng)成功后如下截圖:[rcctSlo^alnost.bin]#./mongos--jcrt4ZUJD--ccr.iigdb133.168.E1].248:3J000--cl.ur.k?ize13--locfp&tk=/hD^ie(\iser/mergodo/io/inongcs.log--forkallcutpuz.gomgtc:f\iser/mergodo/io/itiongc5.log_ccfile[/howe/n^Er/iroti^DilD/dti/niciLgos.ej:L5ts;copiedtotenporac^zi_e[/Iome/user/cfc/tron^DS.Lo^.2C12-O6-Z7T21-28-3^]ierhedprocess:11C23ct.ilcprocessstartedpac=^Lexitir.c[rcctQlozialhostbin]#啟動(dòng)參數(shù)說明:--port:路由進(jìn)程端口、--configdb:指定配置服務(wù)器的訪問方式、--chunkSize:集合分片的大?。▎挝?M),--logpath:日志文件路徑、--fork:后臺運(yùn)行。3.1.5.配置集群通過配置上述的三個(gè)服務(wù),集群環(huán)境已經(jīng)搭建好,下一步將需要登陸到路由進(jìn)程,并配置集群環(huán)境。主要有以下三步:?登陸路由連接Route服務(wù)的命令為:./mongoadmin--port40000進(jìn)去后截圖如下:[root-Sloealhostbin]./mongoadinin--port40000MongoDBshellversion:2.1.1connectingto:127.0.0.1:40000/admininongoax-?添加節(jié)點(diǎn)登陸到路由進(jìn)程后,需要配置集群環(huán)境中的Sharding服務(wù)。配置命令如下:添加248Mongodb實(shí)例到集群中db.runCommand({addshard:"192.168.84.248:20000"})添加120Mongodb實(shí)例到集群中db.runCommand({addshard:"192.168.84.120:20000"})addshard:rr192.16S.S1!.S'IS:2QQ0Qrr}){rrshardAddedrr:frrokrr:1}如上圖所示,執(zhí)行命名后返回Ok,即增加成功。驗(yàn)證集群查看當(dāng)前驗(yàn)證環(huán)境中集群所包含的Sharding服務(wù)詳細(xì)列表的命名為:db.runCommand({listshards:1}):

t[iLiijgcis>dij.runCoiciicnndi:{listshsrcis:1})(r,3]iards,r::,F_idIF:F,5hard0001,,i."host":rr,92.168.84.120:20000,F,r_idir:rr3]iard0002,r,.,rhO5trr:,rL92.168.84.2^8:20000":rrokrr:1}mongos>如上圖所示,當(dāng)前集群環(huán)境包含120,248兩個(gè)Sharding服務(wù)。至此Mongodb的集群環(huán)境成功搭建完畢。GRUD操作集群環(huán)境下的GRUD操作和單節(jié)點(diǎn)實(shí)例是沒有區(qū)別的。需要注意的是在登陸路由進(jìn)程后,首先要設(shè)置數(shù)據(jù)庫的屬性是否是分片存儲再基于數(shù)據(jù)庫基礎(chǔ)上設(shè)置業(yè)務(wù)表是否分片存儲。3.2.1.設(shè)置數(shù)據(jù)庫分片存儲基于上述配置好的集群環(huán)境可通過printShardingStatus()命令查看當(dāng)前有哪些數(shù)據(jù)庫以及這些數(shù)據(jù)庫是否設(shè)置分片存儲。ptliicSbarilitigHeiLijsI)1^kordi-nqSEeEumshardiTigverslDii?[r_ldn:Lr:3、〔^_idn:七膈EDOCil,:*,192.163_fl4.12a:2OflOD,1)£:%膈EDO冀七nJl03i:r:n192.163.01.]dat:〔七i洲:臨dmin:3tanned^:talwr叩匚im巧爐:^crnifig"]tr_i(3":nTe3C"z"parclT-LCined":crueznj)rinstyr:"slian300CiS"!1-test-^u-Lk^JuevcliunJca:湖腳何1mhai:如碩1£「-ICTs[SminKey:L1卜-?》i七也":】on:stBrdlOOOETin*(n]理rJ01」典匚Ii3i:7j:酊例9"就畝qg況E時(shí)j)—?]^iil*i]£1卜)Qli:3t^IliODJl[■id11;Hlaqbdh:HpaititiDJied*-:talss,*ptinELTF”;^jbatdljOOc*卜£r_i0":njLqti_cfc-?!,t>3rcicio-nrtT:m比—叩口/燈廣:"^bardoooe^卜nangD5>如上圖所示test數(shù)據(jù)庫后面的狀態(tài)是true,代表是分片存儲。

Jlqb_db數(shù)據(jù)庫的狀態(tài)是flase,代表沒有設(shè)置為分片存儲,并且后期該數(shù)據(jù)庫下的業(yè)務(wù)表都存放在shard002即248機(jī)器上。通過db.runCommand({enablesharding:"jlqb_db"})更改設(shè)置jlqb_db數(shù)據(jù)庫的分片存儲屬性,如下圖:mango5>useaclininsiritdieddljmangos>db?runCormanci([enahlesbarding:rrjlqki_dbrr}j{ppok,p:1}mangos>printShardingSsatusi:i:mhardin?rStatusI:”idpp:1,.,pI:”idpp:1,.,pver3iurJp:3}shards:<rr_ld[rr:{rr<rr_ld[rr:{rr2idrr:dat.JEiljases:{pp_idrp:■[”一i":rrbhflrdi:iuair'irrp3harziuuL2r/,riioscrr"■lyz.166.54?12O;ZLiODi:irr},rhDSt.rr:n,192.158,84,248:2LiLiDUpr}"ai±Riiii”一artizujed"rrte3t.rp_rrppart.it.iutiedr,:

test.gnIknewchunks:

test.s:iii77cI'-unks:

3?iardOULi2

:=!hacdQDD1{pr_idpr:{5rninFey:falserP,primary,p:ppcuil±ig,p!■tr-.ierrrprinary,r:"shardOLiu2rp)111!■}-->:=■I,ridpr:0}jjectlEi(rr4fc71498^379:Z492Seepri}on:3hardOZiU2Tunest^npi:4LiLU,0)■["id.”:Objectld|pp4fd75496^:Z4-4^4979349Z0eeF,:i}一一:■[rr_idrr:{S-naxFeY:L!■}□r.{:”皿:b_db\■[”一i":rpjlqb-Ltor,,:shardOJU1Tlinestarn口i:40L匚i』L)ri,parLitirir_ei:rrr_idrr:{S-naxFeY:L!■}□r.{:”皿:b_db\■[”一i":rpjlqb-Ltor,,t[iangos>如上圖所示jlqb_db數(shù)據(jù)庫后面的分片存儲屬性由原來的false改變?yōu)閠rue。分片存儲設(shè)置成功。需注意的是以上操作必須切換到admin超級用戶下才有可以設(shè)置分片屬性。3.2.2.設(shè)置業(yè)務(wù)表分片存儲基于分片存儲數(shù)據(jù)庫的業(yè)務(wù)表默認(rèn)都是非分片存儲的。通過命令db.tablename.stats可查看當(dāng)前表狀態(tài),如下圖:mongos>dto.user_2.stats();■[,rsharded,r;lalse;,rpriniary,r:,rshard0002r\,rns,r:r,jlqfci_dto.user_2,r,,rcount,r:1,rrsizerr:52frravgOtojSizerr:52fJlqb_db數(shù)據(jù)庫下的user_2業(yè)務(wù)表的sharded屬性為false,即不是分片存儲的并且存放在shard002及248機(jī)器上。通過執(zhí)行db.runCommand({shardcollection:"jlqb_db.user_2”,key:{_id:1}})可修改分片存儲屬性。如下圖:mongos:=■lUj.rujiCzumianci(■[sliardecILeztion:rpjlq}j_dki.user_2,p/key:{_id:1}j)■(rrokpr:匚I,rremrBgrp:riaccessdenied-useadinindbrr}niungos::-'.iseadini□siii-chedt.jlUjadtninrnongos:=■dti.rujiCzumiancli:■[shardecILeztion:rp;lqb_c3b.user_2lp,key:■[_id:1}1){preu11ectirnshardtcl,p:pp:Iqbdb.user2"fp,ukpp:1}分片存儲屬性修改后,查看業(yè)務(wù)表狀態(tài)中的是否分片狀態(tài)已由false改為true,如下:motLg'os>din.user_2.stats[){r,shauded":truerrrnsrr:rrjlqto_dki.user_2r\rrcount":1,rrnmnExtentsr,:1f^size":52,stouageSize,r:4096f3.2.3.數(shù)據(jù)操作設(shè)置好數(shù)據(jù)庫以及業(yè)務(wù)表的分片集群屬性后,所有的GRUD操作同單實(shí)例下的操作語法完全一致,區(qū)別的是集群環(huán)境下是分布式存儲和計(jì)算的。常見的操作截圖如下:nijngcs>.user_2.find();{rp_idir:Okjeez.Idirp4feba£4be1aff8c2AaDdecfrpi,rr,n;5ii[ierr:rrzsTiT=Lrgp,irprace"■:3匚injngcs>eUd■user_2?inserti:{nam已:ppfengljazirrfage:jU}:inijngcs>eU:i.user_2.insert,i:{narn已:rpzftangpr『age:25):iinjngcs>eUd.user_2.counti::i;:jinjngLs>eUd.user_2.etat.s();■!:,pshardedrp:trie.r,rijsr,:I,pjlqki_dl3.u^er_3,rcountrp:N,刪除節(jié)點(diǎn)模擬刪除當(dāng)前集群環(huán)境中的120節(jié)點(diǎn),刪除的命令為:db.runCommand({removeshard:"192.168.84.120:20000"}),數(shù)據(jù)庫會(huì)在節(jié)點(diǎn)刪除前把該節(jié)點(diǎn)的分片數(shù)據(jù)平均遷移至剩余節(jié)點(diǎn)中。當(dāng)前集群環(huán)境中有張GNLK業(yè)務(wù)表,分別存儲在120、248兩臺機(jī)器上。Db.gnlk.stats()查看結(jié)果如下:rp3hard3pr:{rpshari=lULiLHpr:{"n己";ppjlq}j_rDzi.i:fnlkppfrpcnunt.rp:269999,rpsizerr:125459380,rpavgCitij5izerp:464.6660913.55693*pp5t.rirageSiz&n:174735360,rrm.miExtentspp:12rpnindp>:esrr:1rplast.Extentsizerr:.50798592rppadclingFact-orrp:1,ppsysternFlags":ZL,rpuserFlagspr;0;rpr.ur.alIni=le>:Siz&rr:8781024,rpindExSizesrp:{pp_id_pp:B761U24Lrpnkrp:1rrshard0002,r:{,Fns":F,jlqb_db.gnlk,rf,Fcount,r:230000,rrsiEerr:106865176,rravgOkijSizerr:464.6312,rrstorageSizerr:123936768,可以看出在節(jié)點(diǎn)1、節(jié)點(diǎn)2上的記錄數(shù)分別為269999、230000條。現(xiàn)在執(zhí)行刪除120節(jié)點(diǎn)命令。inongos>db.runCotmiand({removeshard:"192.168.S4.120:20000rr}){rrnisg,r:"drainingstart.已Rsuccessfullyrr;,F5tate,F:,F5tartedF\,Fshard,F:,FshardOOOL,F,rrnoterr:"youneedtodropormovePrimarythesedatatoases"frrdlzi3ToMove,r:[r,jlqki_dtorr],rrokrr:1}mongoa>dh.runComraand({removeshard:"192.168.S4.120:20000,F}){,Fnisg,F:"drainingongoing"rrrstaterr:"ongoingrrfrrreniaining,r:{r,chun}<5":NumberLong(3)r如上圖所示,返回Ok:1則表示刪除命令成功,但由于存在數(shù)據(jù)轉(zhuǎn)存,節(jié)點(diǎn)的刪除需要一定的時(shí)間。刪除命令返回的結(jié)果集中的State可以獲取當(dāng)前的進(jìn)度,如上圖的started代表開始刪除、ongoing代表正在遷移數(shù)據(jù),等遷移結(jié)束,再次執(zhí)行刪除命令就會(huì)提示失敗并說明該節(jié)點(diǎn)已經(jīng)不存在當(dāng)前集群中。刪除節(jié)點(diǎn)成功通過命令printShardingStatus():查看單簽集群節(jié)點(diǎn)表如下:irangos:::-useadminsTiTit.checitodtoadmininongos>db.runComwand({rernoveshard:,p192.163.84.120:2D00U”}:ii:pp][ism「':”「emovtsliardcoinpletedeucc=E3fullyp,irrrstate,r:rri?ijr[ipler.ecirrfrp5hard|ip:rr5hardLiLiDlpr,rpukpr:1i-inongos>printsharcingotatusi::i;Sheirclingusahard!ngversije:{N_id,p:lr"versiLn^:3}shards:{pridpr:rrsa£rdODu2,T,rrku5t.rp:rplS2.15E.84,248:2Linrn,r}dat;5ibases:{pridrr:rradninpp,ffpartitiDnedrp:false,rpprirnaryp,:rrconfirrp}{rr_±d":frtestp,,r"partitiun=drp:triierimar7pp:,psh.ardUJ匚£禪!■teBt.gnlknewchunkBttst■SKEVEhunks:shardO3C22■!rr_idrp:{a[iir.f:ev:1!■}■(rp_id,r:Object.Zdi:r'4fd■!rr2idrp:ObjectIdi:rp^fcl75^984344e4y79:E4923ee,r)}-->>■:{pr_idpr:rrl;iqb_dbrrf,rp:=trtiticneclrp:false,,"pisiinaty叩srrsh:=ttduOD2rp}{rr_±drr:frjLcb_dbppir,ppartitiLned^:false.r"pirimmry叩:ppsharduOD2pp}irangLiSx-

通過命令db.gnlk.stats查看業(yè)務(wù)表存儲狀態(tài)如下:mon.g'os>db.gnLlc.st-at-s();{rrsh.a.rdedrp:true,Mn.5":,pjLqb_db.gnlkF,frrCOU.Ilt-rr:陽陽陽「"numExtent-srr:13;rrsizerp:232324472,rrstorageSiEerp:243314688,,,totalIndexSiEe,1-:23244368,rrirLd.£jcSiE&srr:{rp_id_rr:23Z44368}『rravg-OkijSiEerp:464.6498732997466,,Fn.in.d.exes,1-:Mnch.u.iiks,F:5「rrsliard3rr:{rpshard0002rp:{rpnsr,:r,jLqtodto.gnlk"r,l,count,r:499999,'「miH巳陽:232324472rFI,avgObjSiEe,r:464.6498732997466,rp3t.orageSiEer,:Z4331468Br"iiuinEKt己口七尋'.:L3「可以看到該表所有的數(shù)據(jù)現(xiàn)在都存儲在shard0002即248機(jī)器上。3.4.新增節(jié)點(diǎn)3.4.新增節(jié)點(diǎn)l=i將上例Mongodb集群中刪除的120節(jié)點(diǎn)再增加到當(dāng)前集群中,命令為:db.runCommand({addshard:"192.168.84.120:20000"}),數(shù)據(jù)庫會(huì)把分片集合數(shù)據(jù)平均遷移至該節(jié)點(diǎn)中。執(zhí)行增加命令成功截圖如下:mongos>useadminswitchedtodfcadmindb.runCoimaiid({"192.16S.84.120;2OODD^}){r,ofc,r;1}成功后通過命令:printShardingStatus()查看集群的狀態(tài)如下:triungopirintShardingStatusi::i;S-lardinijrSt.:=tus:=:hardinerversion:Irp_idrr:"version":3i-shards:{pr_idri:rp3hardLiLiU2r\rrhu3-rr:rp192■168■84,248:20000Pl}{PCidN:^shardLiLiuS^,”h口曰二”:rp192.168.84.120:jUULiUN}ciat.alziases:■[pr_idri:rpadminrprpp:=rt.ir.iDnedrr:false.rrrprimary":rpconfigrp:{"idN:"jlqhdb”,Nparti-iuned":ialse.rppprLinaryN:ppshardULiLi2{pr_idri:rrl:icilj_Lll:irrfripart.i-iunedrr:falsE,rppriiriary'1:prstiardULiLi3{"idN:ppiLESt.pp,r"partit.ioneclpp:fal^e,"primary":"sharzlUUUS"■}如上圖所示,節(jié)點(diǎn)成功增加。在新增和刪除節(jié)點(diǎn)的時(shí)候需要注意一下兩點(diǎn):1、新增節(jié)點(diǎn)的時(shí)候要確保新增節(jié)點(diǎn)實(shí)例中的數(shù)據(jù)庫名和當(dāng)前集群環(huán)境中已有的數(shù)據(jù)庫名不沖突。2、刪除節(jié)點(diǎn)的時(shí)候要確保該節(jié)點(diǎn)上的沒有primary數(shù)據(jù)庫,否則的話需先刪除primary數(shù)據(jù)庫才可以刪除節(jié)點(diǎn)。3、新增、刪除節(jié)點(diǎn)都是基于超級用戶admin去操作的。數(shù)據(jù)分片當(dāng)前環(huán)境下存在記錄數(shù)為10w的GNLK集合未分片存儲。查看屬性如下圖所示:mongos>.gnlk.stats();),r5hardedrr:falsefrrprimaryrr:rrshard.OOO3r\rrnsrr:rrjIqtodb.gtilterrf,Fcount":100000

溫馨提示

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

最新文檔

評論

0/150

提交評論