您好,登錄后才能下訂單哦!
一、概述
mongodb副本集維護主要工作:
1、查看副本集狀態(集群狀態、同步延遲、單個庫的運行狀態mongostate)
2、增刪節點、停節點shutdown
mongodb副本集集群同步機制
數據復制的目的是使數據得到最大的可用性,冗余,避免單點故障。
副本集中同一時刻只有一臺服務器是可以寫的,primary主庫上寫,從庫同步數據
副本集主從復制也是異步同步的過程。slave從primary上獲取日志,然后在自己身上完全順序的執行日志記錄的操作(該日志不記錄查詢操作,只記錄更新操作)。被同步的日志就是local庫中的oplog.rs表,這個表占空間比較大,磁盤大小5%。啟動參數設置oplog.rs的大小:--oplogSize 1000,單位M。生產環境中建議設置大一些,防止無法同步情況發生。
二、查看集群狀態
1.rs.status()
2.db.printSlaveReplicationInfo()
查看主從數據庫延遲時間
3.mongodb監控工具- mongostat
3.1 如果發現DB突然變慢或者有其他問題,首先mongostat查看狀態
mongostat -uxx -pyy -rowcount 12 300 mongostat -uxx -pyy -N 12 300 ##每300秒輸出一次DB狀態,共輸出12次
3.2 輸出參數說明
inserts/s 每秒插入次數
query/s 每秒查詢次數
update/s 每秒更新次數
delete/s 每秒刪除次數
getmore/s 每秒執行getmore次數,查詢時游標(cursor)的getmore操作,用處不大
command/s 每秒命令數,比以上插入、查找、更新、刪除的綜合還多,還包含了別的命令。比如批量插入,只認為一條命令,意義不大。
flushes/s 每秒執行fsync,將數據寫入磁盤的次數。一般都是0,刷如磁盤時是1,可以通過兩個1之間的間隔時間,判斷多久刷新一次數據到磁盤。flush開銷很大,如股票頻繁刷新,可能有問題。
mapped/s 所有的被nmap的數據量,單位是MB
vsize 虛擬內存使用量,單位MB
res 物理內存使用量,單位MB。這個和top看到的狀態一樣,mapped/vsize一般不會有大變動,res會慢慢上升,如果res經常突然下降,查查是不是有別的程序狂吃內存。
faults/s 每秒訪問失敗數(只有linux有),數據被交換出物理內存,放入swap,如果經常不為0,就是服務器內存太小,造成頻繁swap寫入,此時要加大內存。
locked db % 被鎖的時間百分比,盡量控制在50%以下。這個值過大(經常超過10%,可能出問題)
idx miss % 非常重要的參數,索引不命中所占百分比。正常情況下,查詢都應該通過索引,也就是idx miss為0,如果太高的話就是索引太少了
qr|qw queue lengths for clients waiting (read|write)客戶端過來的讀寫請求的長度。
ar|aw active clients(read|write)活躍的客戶端過來的讀寫請求。即總共的讀寫請求。
PS:當mongdb接收太多命令,而數據庫被鎖住無法執行完成,就會將命令加入到隊列。都為0,表示mongodb毫無壓力,高并發時,隊列值會升高,表示DB的處理速度不及請求速度。看下是否有開銷很大的慢查詢。如果查詢一切正常,確實負載很大,則考慮加服務器了。
net In/Out 網絡帶寬壓力,一般網絡不會成為mongdb瓶頸。
conn 當前連接數
set 副本集集群名稱
repl 當前庫在集群中的狀態。PRI-master,SEC-second,REC-recovering,UNK-unkown
time 時間戳
4.web控制臺
mongodb自帶web控制臺,默認和數據服務一起開啟。默認端口28017(數據端口27017基礎上+1000)
狀態頁顯示信息:
4.1 當前db的所有連接
4.2 各個數據庫dbs和collection的訪問統計,包括reads/writes/queries/getmores/inserts/updates/removes
4.3 寫鎖的狀態
4.4 日志文件的最后幾百行
4.5 最上面兩行,mongodb狀態查詢的其他命令
5.獲取mongodb當前正在執行的操作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 殺死執行時間過長的命令
>db.killOp("shard3:466404288")
6.MongoDB監控服務MongoDB Monitoring Service(MMS)
mongodb廠商提供的監控服務,可在網頁和Andriod客戶端查看
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。