溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

mongodb副本集維護(hù)

發(fā)布時(shí)間:2020-07-22 12:58:14 來源:網(wǎng)絡(luò) 閱讀:952 作者:jalyzjs 欄目:MongoDB數(shù)據(jù)庫(kù)

一、概述

mongodb副本集維護(hù)主要工作:

1、查看副本集狀態(tài)(集群狀態(tài)、同步延遲、單個(gè)庫(kù)的運(yùn)行狀態(tài)mongostate)

2、增刪節(jié)點(diǎn)、停節(jié)點(diǎn)shutdown


mongodb副本集集群同步機(jī)制

  1. 數(shù)據(jù)復(fù)制的目的是使數(shù)據(jù)得到最大的可用性,冗余,避免單點(diǎn)故障。

  2. 副本集中同一時(shí)刻只有一臺(tái)服務(wù)器是可以寫的,primary主庫(kù)上寫,從庫(kù)同步數(shù)據(jù)

  3. 副本集主從復(fù)制也是異步同步的過程。slave從primary上獲取日志,然后在自己身上完全順序的執(zhí)行日志記錄的操作(該日志不記錄查詢操作,只記錄更新操作)。被同步的日志就是local庫(kù)中的oplog.rs表,這個(gè)表占空間比較大,磁盤大小5%。啟動(dòng)參數(shù)設(shè)置oplog.rs的大?。?-oplogSize 1000,單位M。生產(chǎn)環(huán)境中建議設(shè)置大一些,防止無(wú)法同步情況發(fā)生。


二、查看集群狀態(tài)

1.rs.status()

mongodb副本集維護(hù)

2.db.printSlaveReplicationInfo()

查看主從數(shù)據(jù)庫(kù)延遲時(shí)間

mongodb副本集維護(hù)


3.mongodb監(jiān)控工具- mongostat

mongodb副本集維護(hù)

3.1 如果發(fā)現(xiàn)DB突然變慢或者有其他問題,首先mongostat查看狀態(tài)

mongostat -uxx -pyy -rowcount 12 300
mongostat -uxx -pyy -N 12 300
    ##每300秒輸出一次DB狀態(tài),共輸出12次


3.2 輸出參數(shù)說明

inserts/s    每秒插入次數(shù)

query/s      每秒查詢次數(shù)

update/s     每秒更新次數(shù)

delete/s     每秒刪除次數(shù)

getmore/s    每秒執(zhí)行g(shù)etmore次數(shù),查詢時(shí)游標(biāo)(cursor)的getmore操作,用處不大

command/s    每秒命令數(shù),比以上插入、查找、更新、刪除的綜合還多,還包含了別的命令。比如批量插入,只認(rèn)為一條命令,意義不大。

flushes/s    每秒執(zhí)行fsync,將數(shù)據(jù)寫入磁盤的次數(shù)。一般都是0,刷如磁盤時(shí)是1,可以通過兩個(gè)1之間的間隔時(shí)間,判斷多久刷新一次數(shù)據(jù)到磁盤。flush開銷很大,如股票頻繁刷新,可能有問題。

mapped/s     所有的被nmap的數(shù)據(jù)量,單位是MB

vsize        虛擬內(nèi)存使用量,單位MB

res          物理內(nèi)存使用量,單位MB。這個(gè)和top看到的狀態(tài)一樣,mapped/vsize一般不會(huì)有大變動(dòng),res會(huì)慢慢上升,如果res經(jīng)常突然下降,查查是不是有別的程序狂吃內(nèi)存。

faults/s     每秒訪問失敗數(shù)(只有l(wèi)inux有),數(shù)據(jù)被交換出物理內(nèi)存,放入swap,如果經(jīng)常不為0,就是服務(wù)器內(nèi)存太小,造成頻繁swap寫入,此時(shí)要加大內(nèi)存。

locked db %   被鎖的時(shí)間百分比,盡量控制在50%以下。這個(gè)值過大(經(jīng)常超過10%,可能出問題)

idx miss %    非常重要的參數(shù),索引不命中所占百分比。正常情況下,查詢都應(yīng)該通過索引,也就是idx miss為0,如果太高的話就是索引太少了

qr|qw        queue lengths for clients waiting (read|write)客戶端過來的讀寫請(qǐng)求的長(zhǎng)度。

ar|aw        active clients(read|write)活躍的客戶端過來的讀寫請(qǐng)求。即總共的讀寫請(qǐng)求。

             PS:當(dāng)mongdb接收太多命令,而數(shù)據(jù)庫(kù)被鎖住無(wú)法執(zhí)行完成,就會(huì)將命令加入到隊(duì)列。都為0,表示mongodb毫無(wú)壓力,高并發(fā)時(shí),隊(duì)列值會(huì)升高,表示DB的處理速度不及請(qǐng)求速度。看下是否有開銷很大的慢查詢。如果查詢一切正常,確實(shí)負(fù)載很大,則考慮加服務(wù)器了。

net In/Out   網(wǎng)絡(luò)帶寬壓力,一般網(wǎng)絡(luò)不會(huì)成為mongdb瓶頸。

conn         當(dāng)前連接數(shù)

set          副本集集群名稱

repl         當(dāng)前庫(kù)在集群中的狀態(tài)。PRI-master,SEC-second,REC-recovering,UNK-unkown

time         時(shí)間戳


 

4.web控制臺(tái)

mongodb自帶web控制臺(tái),默認(rèn)和數(shù)據(jù)服務(wù)一起開啟。默認(rèn)端口28017(數(shù)據(jù)端口27017基礎(chǔ)上+1000)

mongodb副本集維護(hù)

狀態(tài)頁(yè)顯示信息:

4.1 當(dāng)前db的所有連接

4.2 各個(gè)數(shù)據(jù)庫(kù)dbs和collection的訪問統(tǒng)計(jì),包括reads/writes/queries/getmores/inserts/updates/removes

4.3 寫鎖的狀態(tài)

4.4 日志文件的最后幾百行

4.5 最上面兩行,mongodb狀態(tài)查詢的其他命令



5.獲取mongodb當(dāng)前正在執(zhí)行的操作db.currentOp()

>db.currentOp()
>{ "opid" : "shard3:466404288", "active" : false, "waitingForLock" : false, "op" : "query", "ns" : "sd.usersEmails", "query" : { }, "client_s" : "10.121.13.8:34473", "desc" : "conn" }

5.1 殺死執(zhí)行時(shí)間過長(zhǎng)的命令

>db.killOp("shard3:466404288")


6.MongoDB監(jiān)控服務(wù)MongoDB Monitoring Service(MMS)

mongodb廠商提供的監(jiān)控服務(wù),可在網(wǎng)頁(yè)和Andriod客戶端查看

mongodb副本集維護(hù)






向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI