您好,登錄后才能下訂單哦!
一、概述
mongodb副本集維護(hù)主要工作:
1、查看副本集狀態(tài)(集群狀態(tài)、同步延遲、單個(gè)庫(kù)的運(yùn)行狀態(tài)mongostate)
2、增刪節(jié)點(diǎn)、停節(jié)點(diǎn)shutdown
mongodb副本集集群同步機(jī)制
數(shù)據(jù)復(fù)制的目的是使數(shù)據(jù)得到最大的可用性,冗余,避免單點(diǎn)故障。
副本集中同一時(shí)刻只有一臺(tái)服務(wù)器是可以寫的,primary主庫(kù)上寫,從庫(kù)同步數(shù)據(jù)
副本集主從復(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()
2.db.printSlaveReplicationInfo()
查看主從數(shù)據(jù)庫(kù)延遲時(shí)間
3.mongodb監(jiān)控工具- mongostat
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)
狀態(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客戶端查看
免責(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)容。