day19-mongodb集群以及日志、異常講義_第1頁
day19-mongodb集群以及日志、異常講義_第2頁
day19-mongodb集群以及日志、異常講義_第3頁
day19-mongodb集群以及日志、異常講義_第4頁
day19-mongodb集群以及日志、異常講義_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

其它、簡一組Mongodb集,就是一組mongod進(jìn)程,這些進(jìn)程同一個(gè)數(shù)據(jù)集合。集提供了數(shù)據(jù)冗余和高等級(jí)的可靠性,這是生產(chǎn)部署的基礎(chǔ)。目失。能夠隨時(shí)應(yīng)對(duì)數(shù)據(jù)丟失、機(jī)器損壞帶來的風(fēng)險(xiǎn)。還能提高能力,用戶的服務(wù)器和寫入服務(wù)器在不同的地方,而且,由不同的服務(wù)器為不同的用戶提服務(wù),提高整個(gè)系統(tǒng)的負(fù)載。機(jī)(Primry),接受客戶端所有的寫入操作,其他都是副本實(shí)例(Scondry),從主服務(wù)器上獲得數(shù)據(jù)并保持同步。主服務(wù)器很重要,包含了所有的改變操作(寫)此當(dāng)主服務(wù)器掛掉了,就會(huì)在副本服務(wù)器上重新選取一個(gè)成為主服務(wù)器。每個(gè)集還有一個(gè)仲裁者(Ate),仲裁者不數(shù)據(jù),只是負(fù)責(zé)通過心跳包來確認(rèn)集群中集合的數(shù)量,并在主服務(wù)器的時(shí)候作為仲裁決定結(jié)果。、架、三個(gè)數(shù)據(jù)的、存在arbiter節(jié)點(diǎn)的、集通過rlStie命令(或mongos 的sat())進(jìn)行初始化,初始化后各個(gè)成員間開始發(fā)送心跳消息,發(fā)Py操,得大多』員票持的點(diǎn)會(huì)成Py其節(jié)成Scy。『大多數(shù)』的定假設(shè)集內(nèi)投票成員數(shù)量為N,則大多數(shù)為N/2+1,當(dāng)集內(nèi)存活成員數(shù)量不足大多數(shù)時(shí),整個(gè)集將無法、成員說成說情集yPyPPiay同步寫入的數(shù)據(jù),以保證與Piay相同的數(shù)據(jù)。Scndy可以提供讀服增點(diǎn)力升用,Mogob支持對(duì)集的Seconay節(jié)點(diǎn)進(jìn)行靈活的配置,以適應(yīng)多種場景的需求。2個(gè)節(jié)點(diǎn)的集,1個(gè)Primary,1個(gè)Secondary,任一節(jié)點(diǎn)宕機(jī),集將不能提供服務(wù)(無法選出Priry),這時(shí)可以給集添加一個(gè)Ar節(jié)點(diǎn),即使有節(jié)點(diǎn)宕機(jī),仍能選出Primry。Artr本身不數(shù)據(jù),是非常輕量級(jí)的服務(wù),當(dāng)集成員為偶數(shù)時(shí),最好加入一個(gè)Are節(jié)點(diǎn),以提升集可用性。Priority0節(jié)點(diǎn)的優(yōu)先級(jí)為0,不會(huì)被為Primary。比如你跨機(jī)房A、B部署了一個(gè)集,并且想指定Primry必須在A機(jī)房,這時(shí)可以將B機(jī)房的集成員Pririty設(shè)置為0,這樣Primry就一定會(huì)是A機(jī)房的成員。(注意:如果這樣部署,最好將『大多數(shù)』節(jié)點(diǎn)部署在A機(jī)房,否則網(wǎng)絡(luò)分區(qū)時(shí)可能無法選出Primry) Hidde節(jié)點(diǎn)不能被選為主(Pririty為),并且對(duì)Drivr不可見。因Hidden節(jié)點(diǎn)不會(huì)接受Driver的請(qǐng)求,可使用Hidde節(jié)點(diǎn)做一些數(shù)據(jù)備份、離線計(jì)算的任務(wù),不會(huì)影響集的服務(wù)。Dlayed節(jié)點(diǎn)必須是Hidde節(jié)點(diǎn),并且其數(shù)據(jù)與Primry一段時(shí)間(可配置,比如1時(shí))。因Delayed節(jié)點(diǎn)的數(shù)據(jù)比Primry一段時(shí)間,當(dāng)錯(cuò)誤或者無效的數(shù)據(jù)寫入Primry時(shí),可通過Dlayed節(jié)點(diǎn)的數(shù)據(jù)來恢復(fù)到之前的時(shí)間點(diǎn)。、搭建##創(chuàng)建3個(gè)mongo容#"ok":1,#"operationTime":,"$clusterTime":"clusterTime":,"signature":}}}"hash":}}}"hash":"keyId":#進(jìn)入容器dockerexec-itmongo01#登錄到mongo服mongo#初始化集集rs.initiate(_id:"rs0",members:[{_id:0,host:"85:27017"{_id:1,host:"85:27018"{_id:2,host:"85:27019"]#響{9# 庫查詢數(shù)#在主庫插入數(shù)rs0:PRIMARY>"keyId":}}}rs0:SECONDARY>rs.slaveOk()#設(shè)置允許從庫數(shù)rs0:SECONDARY>{"_id": "id":1001,"name":"zhangsan"、故障轉(zhuǎn)測試一:從節(jié)點(diǎn)、增加arbiter節(jié)1dockercreate--namemongo04-p27020:27017-vmongo-data-04:/data/dbmongo:4.0.3-23456789replSet"rs0"--dockerstartmongo04rs0:PRIMARY>{"ok":"operationTime":Timestamp( ,1),"$clusterTime":{"clusterTime":Timestamp( "signature":{"hash":"keyId":}}}通過測試,添加arbte節(jié)點(diǎn)后,如果集群節(jié)點(diǎn)數(shù)不滿足N/21時(shí),arite節(jié)點(diǎn)可作為湊數(shù)節(jié)點(diǎn),可以選出主節(jié)點(diǎn),繼續(xù)提供服務(wù)。分片(shing)是MnDB用來將大型集合分割到不同服務(wù)器(或者說一個(gè)集群)上所采用的方法。盡管分片起源于關(guān)系型數(shù)據(jù)庫分區(qū),但MnDB分片完全又是另一回事。和yS分區(qū)方案相比,ogDB的最大區(qū)別在于它幾乎能自動(dòng)完成所有事情,只要告訴MnDB自動(dòng)數(shù)據(jù)在不同服務(wù)器之間的均衡。、簡高數(shù)據(jù)量和吞吐量的數(shù)據(jù)庫應(yīng)用會(huì)對(duì)單機(jī)的性能造成較大壓力,大的查詢量會(huì)將單機(jī)的P耗盡,大的數(shù)據(jù)量對(duì)單機(jī)的壓力較大,最終會(huì)耗盡系統(tǒng)的內(nèi)存而將壓力轉(zhuǎn)移到磁盤上。為了解決這些問題,有兩個(gè)基本的方法垂直擴(kuò)展和水平擴(kuò)展。群可以提高自己的容量和吞吐量。舉例來說,當(dāng)插入一條數(shù)據(jù)時(shí),應(yīng)用只需要這條數(shù)據(jù)的分片.、優(yōu)對(duì)集群進(jìn)行抽象,讓集群“不可見nDB自帶了一個(gè)叫做mongos的專有路由進(jìn)程。mongos就是掌握統(tǒng)一路口的路由器,其會(huì)將客戶端發(fā)來的請(qǐng)求準(zhǔn)確無誤的路由到集群中的一個(gè)或者一組服務(wù)器上,同時(shí)會(huì)把接收到的響應(yīng)拼裝起來發(fā)回到客戶端。保證集群總是可將ogDB的分片和功能結(jié)合使用,在確保數(shù)據(jù)分片到多臺(tái)服務(wù)器的同時(shí),也確保了每分?jǐn)?shù)據(jù)都有相應(yīng)的備份,這樣就可以確保有服務(wù)器換掉時(shí),其他的從庫可以立即壞掉的部分繼續(xù)工作。使集群易于擴(kuò)、架組說 提供對(duì)外應(yīng)用,所有操作均通過mongos執(zhí)行。一般有多個(gè)mongs節(jié)點(diǎn)。數(shù)據(jù)遷移和數(shù)據(jù)自動(dòng)平衡。ongs本身并不持久化數(shù)據(jù),Shadedclustr所有的元數(shù)據(jù)都會(huì)到C?gServe,而用戶的數(shù)據(jù)會(huì)分散到各個(gè)sh。Mogos啟動(dòng)后,會(huì)從配置服務(wù)器加載元數(shù)據(jù),開始提供服務(wù),將用戶的請(qǐng)求正確路由到對(duì)應(yīng)的分片。當(dāng)數(shù)據(jù)寫入時(shí),ogDBCltr根據(jù)分片鍵設(shè)計(jì)寫入數(shù)據(jù)。當(dāng)外部語句發(fā)起數(shù)據(jù)查詢時(shí),MnDB、集群中數(shù)據(jù)分在一個(gè)shardserver內(nèi)部,MongoDB會(huì)把數(shù)據(jù)分為chunks,每個(gè)chunk代表這個(gè)shardserver內(nèi)部一部分?jǐn)?shù)據(jù)。Slitting:當(dāng)一個(gè)chuk的大小超過配置中的chunksize時(shí),ogDB的進(jìn)程會(huì)把這個(gè)cunk切分成更小的chuk,從而避免chuk過大的情況Blaning:在ogDB中,blacer是一個(gè)進(jìn)程,負(fù)責(zé)chunk的遷移,從而均衡各個(gè)shdsrvr載,系統(tǒng)初始1個(gè)chunk,chunksiz默認(rèn)值64M,生產(chǎn)庫上選擇適合業(yè)務(wù)的chunksize是最好的。mnDB會(huì)自動(dòng)拆分和遷移chks。、chunk及遷隨著數(shù)據(jù)的增長,其中的數(shù)據(jù)大小超過了配置的chunksiz,默認(rèn)是64,則這個(gè)chuk就會(huì)成兩個(gè)。數(shù)據(jù)的增長會(huì)讓chuk得越來越多。這時(shí)候,各個(gè) 、小的cukiz:數(shù)據(jù)均衡是遷移速度快,數(shù)據(jù)分布更均勻。數(shù)據(jù)頻繁,路由節(jié)點(diǎn)消耗資源。大的cukiz:數(shù)據(jù)少。數(shù)據(jù)塊移動(dòng)集中消耗資源。chunkSize對(duì)及遷移的影MongoDB默認(rèn)的chunkSize為64MB,如無特殊需求,建議保持默認(rèn)值;chunkSize會(huì)直接影響到chunk分chunkSize越小,chunk及遷移越多,數(shù)據(jù)分布越均衡;反之,chunkSize越大,chunk及遷移會(huì)更c(diǎn)hunk自動(dòng)只會(huì)在數(shù)據(jù)寫入時(shí)觸發(fā),所以如果將chunkSize改小,系統(tǒng)需要一定的時(shí)間來將chunk到chunk只會(huì),不會(huì)合并,所以即使將chunkSize改大,現(xiàn)有的chunk數(shù)量不會(huì)減少,但chunk大小會(huì)隨、搭建集##啟動(dòng)服#進(jìn)去容器#集群初始 _id:configsvr:members: {_id:0,host:"85:17000" {_id:1,host:"85:17001" {_id:2,host:"85:17002" 2628#創(chuàng)建2個(gè)shard集群,每個(gè)集群都有3#集群dockercreate--nameshardsvr01-p37000:27018-vmongoshardsvr-data-01:/data/dbmongo:4.0.3--replSet"rs_shardsvr1"--bind_ip_all--shardsvrdockercreate--nameshardsvr02-p37001:27018-vmongoshardsvr-data-02:/data/dbmongo:4.0.3--replSet"rs_shardsvr1"--bind_ip_all--shardsvrdockercreate--nameshardsvr03-p37002:27018-vmongoshardsvr-data-03:/data/dbmongo:4.0.3--replSet"rs_shardsvr1"--bind_ip_all--shardsvr#集群dockercreate--nameshardsvr04-p37003:27018-vmongoshardsvr-data-04:/data/dbmongo:4.0.3--replSet"rs_shardsvr2"--bind_ip_all--shardsvrdockercreate--nameshardsvr05-p37004:27018-vmongoshardsvr-data-05:/data/dbmongo:4.0.3--replSet"rs_shardsvr2"--bind_ip_all--shardsvrdockercreate--nameshardsvr06-p37005:27018-vmongoshardsvr-data-06:/data/dbmongo:4.0.3--replSet"rs_shardsvr2"--bind_ip_all--shardsvr#啟動(dòng)容dockerstartshardsvr01shardsvr02dockerstartshardsvr04shardsvr05shardsvr06#進(jìn)去容器dockerexec-itshardsvr01mongo#初始化集 _id:members: {_id:0,host:"85:37000" {_id:1,host:"85:37001" {_id:2,host:"85:37002" 5860#初始化集

mongo{_id:"rs_shardsvr2",members:[{_id:0,host:"85:37003"{_id:1,host:"85:37004"{_id:2,host:"85:37005"]})#創(chuàng)建mongos節(jié)點(diǎn)容器,需要指定configdockercreate--namemongos-p6666:27017--entrypoint"mongos"mongo:4.0.3--configdbrs_configsvr/85:17000,85:17001,85:17002--dockerstartmongosdockerexec-itmongosbashmongo85:6666#設(shè)置分片規(guī)則,按照_id的hash進(jìn)行sh.shardCollection("test.order",{"_id":"hashed"#插入測試數(shù)usefor(i=1;i<=i=i+1){db.order.insert({'id':i,'price':}#分別在2個(gè)shard集群中查詢數(shù)據(jù) useconfigdb.databases.find()#列出所有數(shù)據(jù)庫分片情況db.collections.find()#查看分片的片鍵sh.status()#查詢分片集群的狀態(tài)信息、阿里巴巴開發(fā)手、了解Java簡易日志門面(SimpleLoggingFacadeforJava,縮寫SLF4J),是一套包裝Logging框架的界面程式,以外觀模式實(shí)現(xiàn)??梢栽谲浖渴鸬臅r(shí)候決定要使用的Logging框架,目前主要支援的有JavaLoggingAPI、Log4j及l(fā)ogback等框架。以MIT方式發(fā)布。SLF4JLog4j和Logback的作者CekiGülcü,他宣稱SLF4JLog4j更有效率,而且比ApacheCommonsLogging(JCL)簡單、穩(wěn)定。、SLF4JLOGGER.info("這是info日志信息.代碼之前進(jìn)行打印信息。}}代碼之后進(jìn)行打印信息。.3.3、與JDK14導(dǎo)入依賴運(yùn)行上面的代碼進(jìn)試運(yùn)行上面的代碼 試、與Log4j整<artifactId><artifactId>slf4j-

溫馨提示

  • 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)論