![mongodb 362集群搭建:分片+副本集_第1頁](http://file4.renrendoc.com/view/71c96f4482b38cd764314fc9327720dc/71c96f4482b38cd764314fc9327720dc1.gif)
![mongodb 362集群搭建:分片+副本集_第2頁](http://file4.renrendoc.com/view/71c96f4482b38cd764314fc9327720dc/71c96f4482b38cd764314fc9327720dc2.gif)
![mongodb 362集群搭建:分片+副本集_第3頁](http://file4.renrendoc.com/view/71c96f4482b38cd764314fc9327720dc/71c96f4482b38cd764314fc9327720dc3.gif)
![mongodb 362集群搭建:分片+副本集_第4頁](http://file4.renrendoc.com/view/71c96f4482b38cd764314fc9327720dc/71c96f4482b38cd764314fc9327720dc4.gif)
![mongodb 362集群搭建:分片+副本集_第5頁](http://file4.renrendoc.com/view/71c96f4482b38cd764314fc9327720dc/71c96f4482b38cd764314fc9327720dc5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
mongodb3.6.2集群搭建:分片+副本集mongodb是最常用的nosql數(shù)據(jù)庫在數(shù)據(jù)庫排名中已經(jīng)上升到了前六這篇文章介紹如何搭建高可用的mongodb(分片+副本)集群。在搭建集群之前,需要首先了解幾個(gè)概念:路由,分片、副本集、配置服務(wù)器等。四個(gè)組件:mongos、configserver、shard、replicaset。mongos,數(shù)據(jù)庫集群請(qǐng)求的入口,所有的請(qǐng)求都通過mongos進(jìn)行協(xié)調(diào),不需要在應(yīng)用程序添加一個(gè)路由選擇器,mongos自己就是一個(gè)請(qǐng)求分發(fā)中心,它負(fù)責(zé)把對(duì)應(yīng)的數(shù)據(jù)請(qǐng)求請(qǐng)求轉(zhuǎn)發(fā)到對(duì)應(yīng)的shard服務(wù)器上。在生產(chǎn)環(huán)境通常有多mongos作為請(qǐng)求的入口,防止其中一個(gè)掛掉所有的mongodb請(qǐng)求都沒有辦法操作。configserver,顧名思義為配置服務(wù)器,存儲(chǔ)所有數(shù)據(jù)庫元信息(路由、分片)的配置。mongos本身沒有物理存儲(chǔ)分片服務(wù)器和數(shù)據(jù)路由信息,只是緩存在內(nèi)存里,配置服務(wù)器則實(shí)際存儲(chǔ)這些數(shù)據(jù)。mongos第一次啟動(dòng)或者關(guān)掉重啟就會(huì)從configserver加載配置信息,以后如果配置服務(wù)器信息變化會(huì)通知到所有的mongos更新自己的狀態(tài),這樣mongos就能繼續(xù)準(zhǔn)確路由。在生產(chǎn)環(huán)境通常有多個(gè)configserver配置服務(wù)器,因?yàn)樗鎯?chǔ)了分片路由的元數(shù)據(jù),防止數(shù)據(jù)丟失!shard,分片(sharding)是指將數(shù)據(jù)庫拆分,將其分散在不同的機(jī)器上的過程。將數(shù)據(jù)分散到不同的機(jī)器上,不需要功能強(qiáng)大的服務(wù)器就可以存儲(chǔ)更多的數(shù)據(jù)和處理更大的負(fù)載?;舅枷刖褪菍⒓锨谐尚K,這些塊分散到若干片里,每個(gè)片只負(fù)責(zé)總數(shù)據(jù)的一部分,最后通過一個(gè)均衡器來對(duì)各個(gè)分片進(jìn)行均衡(數(shù)據(jù)遷移)。replicaset,中文翻譯副本集,其實(shí)就是shard的備份,防止shard掛掉之后數(shù)據(jù)丟失。復(fù)制提供了數(shù)據(jù)的冗余備份,并在多個(gè)服務(wù)器上存儲(chǔ)數(shù)據(jù)副本,提高了數(shù)據(jù)的可用性,并可以保證數(shù)據(jù)的安全性。仲裁者(Arbiter),是復(fù)制集中的一個(gè)MongoDB實(shí)例,它并不保存數(shù)據(jù)。仲裁節(jié)點(diǎn)使用最小的資源并且不要求硬件設(shè)備,不能將Arbiter部
署在同一個(gè)數(shù)據(jù)集節(jié)點(diǎn)中,可以部署在其他應(yīng)用服務(wù)器或者監(jiān)視服務(wù)器中,也可部署在單獨(dú)的虛擬機(jī)中。為了確保復(fù)制集中有奇數(shù)的投票成員(包括primary),需要添加仲裁節(jié)點(diǎn)做為投票,否則primary不能運(yùn)行時(shí)不會(huì)自動(dòng)切換primaryo簡(jiǎn)單了解之后,我們可以這樣總結(jié)一下,應(yīng)用請(qǐng)求mongos來操作mongodb的增刪改查,配置服務(wù)器存儲(chǔ)數(shù)據(jù)庫元信息,并且和mongos做同步,數(shù)據(jù)最終存入在shard(分片)上,為了防止數(shù)據(jù)丟失同步在副本集中存儲(chǔ)了一份,仲裁在數(shù)據(jù)存儲(chǔ)到分片的時(shí)候決定存儲(chǔ)到哪個(gè)節(jié)點(diǎn)。環(huán)境準(zhǔn)備系統(tǒng)系統(tǒng)Redhat6.4四臺(tái)服務(wù)器:30/231/232/233安裝包:mongodb-linux-x86_64-rhel62-3.6.2.tgz服務(wù)器規(guī)劃(注:本次搭建這個(gè)環(huán)境主要用來初步測(cè)試,所以沒有使用仲裁。)服務(wù)器230服務(wù)器230服務(wù)器231服務(wù)器232服務(wù)器233mongosconfigservermongosconfigservermongosconfigservermongosconfigservermongosconfigservermongosconfigservershardserver副節(jié)點(diǎn)shardserve副節(jié)點(diǎn)shardserveiTlfp點(diǎn)shardserve主節(jié)點(diǎn)shardserve副節(jié)點(diǎn)shardserve副節(jié)點(diǎn)shardserver副節(jié)點(diǎn)shardserve副節(jié)點(diǎn)shardserveiTlfp點(diǎn)shardserve主節(jié)點(diǎn)shardserve副節(jié)點(diǎn)shardserve副節(jié)點(diǎn)shardserve主節(jié)點(diǎn)shardserve副節(jié)點(diǎn)shardserve主節(jié)點(diǎn)shardserveSI節(jié)點(diǎn)shardserver副節(jié)點(diǎn)shardserve副節(jié)點(diǎn)shardserveS節(jié)點(diǎn)shardserve主節(jié)點(diǎn)shardserveS節(jié)點(diǎn)shardserveS節(jié)點(diǎn)端口分配:mongosconfigshardlshard2shard32000021000270012700227003集群搭建1、安裝mongodb在官網(wǎng)下載mongodb-linux-x86_64-rhel62-3.6.2.tgz,放在/soft下面#解壓tar-xzvfmongodb-linux-x86_64-rhel62-3.6.2.tgz生成目錄mongodb-linux-x86_64-rhel62-3.6.2分別在每臺(tái)機(jī)器建立conf、mongos、config、shard1、shard2、shard3、shard4七個(gè)目錄,因?yàn)閙ongos不存儲(chǔ)數(shù)據(jù),只需要建立日志文件目錄即可。在/soft/mongodb-linux-x86_64-rhel62-3.6.2/下面建以上目錄:mkdirconfmkdir-pmongos/logmkdir-pconfig/datamkdir-pconfig/logmkdir-pshardl/datamkdir-pshardl/logmkdir-pshard2/datamkdir-pshard2/logmkdir-pshard3/datamkdir-pshard3/logmkdir-pshard4/datamkdir-pshard4/log配置環(huán)境變量vim/etc/profile#內(nèi)容exportMDB_HOME=/soft/mongodb-linux-x86_64-rhel62-3.6.2exportPATH=$MONGODB_HOME/bin:$PATH#使立即生效source/etc/profile2、configserver配置服務(wù)器mongodb3.4以后要求配置服務(wù)器也創(chuàng)建副本集,不然集群搭建不成功。添加配置文件vimconf/config.conf##配置文件內(nèi)容pidfilepath=/soft/mongodb-linux-x86_64-rhel62-3.6.2/config/log/configsrv.piddbpath=/soft/mongodb-linux-x86_64-rhel62-3.6.2/config/datalogpath=/soft/mongodb-linux-x86_64-rhel62-3.6.2/config/log/congigsrv.loglogappend=truebind_ip=port=21000fork=true#declarethisisaconfigdbofacluster;configsvr=true#副本集名稱replSet二configs#設(shè)置最大連接數(shù)maxConns=20000啟動(dòng)四臺(tái)服務(wù)器的configservermongod-f/soft/mongodb-linux-x86_64-rhel62-3.6.2/conf/config.conf登錄任意一臺(tái)配置服務(wù)器,初始化配置副本集#連接mongo--port21000#config變量config=(..._id:"configs”,...members:[... (_id:0,host:"30:21000"},... (_id:1,host:"31:21000"},(_id:2,host:〃32:21000〃},(_id:3,host:〃33:21000〃}... ]...}#初始化副本集rs.initiate(config)其中,"—id":"configs"應(yīng)與配置文件中配置的replicaction.replSetName一致,"members”中的"host"為四個(gè)節(jié)點(diǎn)的ip和port3、配置分片副本集(四臺(tái)機(jī)器)設(shè)置第一個(gè)分片副本集配置文件vi/soft/mongodbTinux-x86_64-rhel62-3.6.2/conf/shard1.conf#配置文件內(nèi)容# pidfilepath=/soft/mongodbTinux-x86_64-rhel62-3.6.2/shard1/log/shard1.piddbpath=/soft/mongodbTinux-x86_64-rhel62-3.6.2/shard1/datalogpath=/soft/mongodbTinux-x86_64-rhel62-3.6.2/shard1/log/shard1.loglogappend=truebind_ip=port=27001fork=true#副本集名稱replSet二shard1#declarethisisasharddbofacluster;shardsvr=true#設(shè)置最大連接數(shù)
maxConns=20000啟動(dòng)四臺(tái)服務(wù)器的shardlserver登陸任意一臺(tái)服務(wù)器登陸任意一臺(tái)服務(wù)器,初始化副本集mongod-f/soft/mongodb-linux-x86_64-rhel62-3.6.2/conf/shard1.conf登陸任意一臺(tái)服務(wù)器登陸任意一臺(tái)服務(wù)器,初始化副本集(_id:(_id:(_id(_id:(_id:(_id:(_id:0,1,2,3,hosthosthosthost"30:27001〃},"31:27001〃},"32:27001〃},:"33:27001"}mongo--port27001#使用admin數(shù)據(jù)庫useadminconfig=(id:"shard1",members:[#初始化副本集配置rs.initiate(config);設(shè)置第二個(gè)分片副本集配置文件vi/soft/mongodbTinux—x86_64—rhel62—3.6.2/conf/shard2.conf#配置文件內(nèi)容# pidfilepath=/soft/mongodb-linux-x86_64-rhel62-3.6.2/shard2/log/shard2.piddbpath=/soft/mongodb-linux-x86_64-rhel62-3.6.2/shard2/datalogpath=/soft/mongodb-linux-x86_64-rhel62-3.6.2/shard2/log/shard2.loglogappend=truebind_ip=port=27002
fork=true#副本集名稱replSet二shard2#declarethisisasharddbofacluster;shardsvr=true#設(shè)置最大連接數(shù)maxConns=20000啟動(dòng)四臺(tái)服務(wù)器的shard2servermongod-f/soft/mongodb-linux-x86_64-rhel62-3.6.2/conf/shard2.conf登陸任意一臺(tái)服務(wù)器,初始化副本集mongo--port27002#使用admin數(shù)據(jù)庫useadmin#定義副本集配置config=(..._id:"shard2",...members:[(_id(_id(_id(_id:0,(_id(_id(_id(_id:0,1,2,3,hosthosthosthost"30:27002〃},"31:27002〃},"32:27002〃},:"33:27002"}#初始化副本集配置rs.initiate(config);設(shè)置第三個(gè)分片副本集配置文件vi/soft/mongodb-linux-x86_64-rhel62-3.6.2/conf/shard3.conf#配置文件內(nèi)容# pidfilepath=/soft/mongodb-linux-x86_64-rhel62-3.6.2/shard3/log/shard3.piddbpath=/soft/mongodb-linux-x86_64-rhel62-3.6.2/shard3/datalogpath=/soft/mongodb-linux-x86_64-rhel62-3.6.2/shard3/log/shard3.loglogappend=truebind_ip=port=27003fork=true#副本集名稱replSet二shard3#declarethisisasharddbofacluster;shardsvr=true#設(shè)置最大連接數(shù)maxConns=20000啟動(dòng)四臺(tái)服務(wù)器的shard3servermongod-f/soft/mongodb-linux-x86_64-rhel62-3.6.2/conf/shard3.conf登陸任意一臺(tái)服務(wù)器,初始化副本集mongo--port27003#使用admin數(shù)據(jù)庫useadmin#定義副本集配置config=(..._id:"shard3",...members:[... (_id:0,host:〃30:27003〃},... (_id:1,host:〃31:27003〃},(_id:2,host:〃32:27003〃},(_id:3,host:〃33:27003〃}... ]...}#初始化副本集配置rs.initiate(config);設(shè)置第四個(gè)分片副本集配置文件vi/soft/mongodb-linux-x86_64-rhel62-3.6.2/conf/shard4.conf#配置文件內(nèi)容# pidfilepath=/soft/mongodbTinux-x86_64-rhel62-3.6.2/shard4/log/shard4.piddbpath=/soft/mongodbTinux-x86_64-rhel62-3.6.2/shard4/datalogpath=/soft/mongodbTinux-x86_64-rhel62-3.6.2/shard4/log/shard4.loglogappend=truebind_ip=port=27004fork=true#副本集名稱replSet二shard4#declarethisisasharddbofacluster;shardsvr=true#設(shè)置最大連接數(shù)maxConns=20000啟動(dòng)四臺(tái)服務(wù)器的shard4server
mongod-f/soft/mongodb-linux-x86_64-rhel62-3.6.2/conf/shard4.conf登陸任意一臺(tái)服務(wù)器,初始化副本集mongo--port27004#使用admin數(shù)據(jù)庫useadmin#定義副本集配置config=(..._id:"shard4",...members:[(_id(_id(_id(_id:0,(_id(_id(_id(_id:0,1,2,3,hosthosthosthost"30:27004〃},"31:27004〃},"32:27004〃},:"33:27004"}... ]...}#初始化副本集配置rs.initiate(config);4、配置路由服務(wù)器mongos先啟動(dòng)配置服務(wù)器和分片服務(wù)器,后啟動(dòng)路由實(shí)例啟動(dòng)路由實(shí)例:(四臺(tái)機(jī)器)vi/soft/mongodbTinux—x86_64—rhel62—3.6.2/conf/mongos.confpidfilepath=/soft/mongodb-linux-x86_64-rhel62-3.6.2/mongos/log/mongos.pidlogpath=/soft/mongodb-linux-x86_64-rhel62-3.6.2/mongos/log/mongos.loglogappend=truebind_ip=port=20000fork=true#監(jiān)聽的配置服務(wù)器,只能有1個(gè)或者3個(gè)configs為配置服務(wù)器的副本集名字configdb=configs/30:21000,31:21000,32:21000,33:21000#設(shè)置最大連接數(shù)maxConns=20000啟動(dòng)四臺(tái)服務(wù)器的mongosservermongos-f/soft/mongodb-linux-x86_64-rhel62-3.6.2/conf/mongos.conf5、啟用分片目前搭建了mongodb配置服務(wù)器、路由服務(wù)器,各個(gè)分片服務(wù)器,不過應(yīng)用程序連接到mongos路由服務(wù)器并不能使用分片機(jī)制,還需要在程序里設(shè)置分片配置,讓分片生效。登陸任意一臺(tái)mongosmongo--port20000#使用admin數(shù)據(jù)庫useradmin#串聯(lián)路由服務(wù)器與分配副本集sh.addShard(〃shard1/30:27001,31:27001,32:27001,33:27001〃)sh.addShard(〃shard2/30:27002,31:27002,10.146.67.232:27002,33:27002〃)sh.addShard(〃shard3/30:27003,31:27003,10.146.67.232:27003,33:27003〃)sh.addShard(〃shard4/30:27004,31:27004,32:27004,33:27004〃)#查看集群狀態(tài)sh.status()6、測(cè)試目前配置服務(wù)、路由服務(wù)、分片服務(wù)、副本集服務(wù)都已經(jīng)串聯(lián)起來了,但我們的目的是希望插入數(shù)據(jù),數(shù)據(jù)能夠自動(dòng)分片。連接在mongos上,準(zhǔn)備讓指定的數(shù)據(jù)庫、指定的集合分片生效。#指定testdb分片生效db.runCommand((enablesharding:〃testdb"});#指定數(shù)據(jù)庫里需要分片的集合和片鍵db.runCommand((shardcollection:"testdb.table1",key:{id:1}})我們?cè)O(shè)置testdb的tablel表需要分片,根據(jù)id自動(dòng)分片到shardl,shard2shard3,shard4上面去要這樣設(shè)置是因?yàn)椴皇撬衜ongodb的數(shù)據(jù)庫和表都需要分片!測(cè)試分片配置結(jié)果mongo--port20000#使用testdb ,/為了保證數(shù)據(jù)量大一usetestdb; i 點(diǎn),這里可以隨便寫#插入測(cè)試數(shù)據(jù) \測(cè)試數(shù)據(jù)for(vari=1;i<=300000;i++) __一一--“"db.table1.save({id:i,"test1":"testval1daggrjsi9ohjh"});#查看分片情)兄如下,部分無關(guān)信息省掉了sh.status();databases:{"_id":"config","primary":"config","partitionedtrue}config.system.sessionsshardkey:{"_id":1}unique:falsebalancing:truechunks:shard11{"_id":{"$minKey":1}}-->>{"_id{"$maxKey":1}}on:shard1Timestamp(1,0){"_id":"skye","primary":"shard2","partitioned"false}r〃上」〃_〃.一一〃? 〃_〃一i 〃 j 〃{_id:testdb,primary:shard4,partitioned:true}testdb.tablelshardkey:{"id”:1}unique:falsebalancing:truechunks:shard11shard21shard41{"id":{〃$minKey〃:1}}-->>{"id":2}on:shardlTimestamp(2,0)("id":2}-->>
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 儀器儀表行業(yè)智能化儀器儀表設(shè)計(jì)與生產(chǎn)方案
- 尾礦庫工程承包合同
- 年度業(yè)務(wù)策略分析研討會(huì)會(huì)議紀(jì)要和要點(diǎn)總結(jié)報(bào)告
- 工廠電路安裝工程合同
- 技能培訓(xùn)服務(wù)合同書
- 醫(yī)療器械售后服務(wù)與維修免責(zé)協(xié)議書
- 貨物抵押租賃合同
- 建筑工程承包合同條例
- 房地產(chǎn)保密協(xié)議合同
- 教室租賃合同協(xié)議書
- 天津市和平區(qū)2024-2025學(xué)年高一(上)期末質(zhì)量調(diào)查物理試卷(含解析)
- 《呼吸》系列油畫創(chuàng)作中詩意建構(gòu)的研究與實(shí)踐
- 客流統(tǒng)計(jì)系統(tǒng)施工方案
- 設(shè)備損壞評(píng)估報(bào)告范文
- 透析患者心理問題護(hù)理干預(yù)
- 《大學(xué)生安全教育》課件 項(xiàng)目四 軍事安全
- 10KV電力配電工程施工方案
- 智能感知工程基礎(chǔ)知識(shí)單選題100道及答案解析
- 肌肉注射藥物不良反應(yīng)及預(yù)防措施研究
- 人教版數(shù)學(xué)六年級(jí)上冊(cè)第一單元測(cè)試卷
- 自建房-預(yù)算表
評(píng)論
0/150
提交評(píng)論