MongoDB下rs.status()命令
最近經常遇到資料庫卡頓,連線異常問題,需要連結到資料庫內,常用到rs.status()複製集狀態查詢命令,故借鑑前輩的文章,在此記錄下來,供後續檢視,此處有官人的連結和ID,敬請關注下該博主,謝謝
本文為 wei-xh 的博文,請多多關注博主,連結http://blog.itpub.net/22034023/viewspace-1074651/
{
"set" : "wxh",
"date" : ISODate("2014-01-23T09:34:23Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "wxlab31:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY", # stateStr使用者描述伺服器狀態的字串。有SECONDARY,PRIMARY,RECOVERING等
"uptime" : 30060, # uptime 從成員可到達一直到現在經歷的時間,單位是秒。
"optime" : Timestamp(1390450194, 3), # optimeDate 每個成員oplog最後一次操作發生的時間,這個時間是心跳報上來的,因此可能會存在延遲
"optimeDate" : ISODate("2014-01-23T04:09:54Z"),
"lastHeartbeat" : ISODate("2014-01-23T09:34:21Z"), # lastHeartbeat 當前伺服器最後一次收到其他成員心跳的時間,如果網路故障等可能這個時間會大於2秒
"lastHeartbeatRecv" : ISODate("2014-01-23T09:34:21Z"),
"pingMs" : 0, # pinMs 心跳從當前伺服器達到某個成員所花費的平均時間
"syncingTo" : "wxlab31:27018" # syncingTo表示當前伺服器從哪個節點在做同步
},
{
"_id" : 1,
"name" : "wxlab31:27018",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 30067,
"optime" : Timestamp(1390450194, 3),
"optimeDate" : ISODate("2014-01-23T04:09:54Z"),
"self" : true # self 這個資訊出現在執行rs.status( )函式的成員資訊中
},
{
"_id" : 2,
"name" : "wxlab31:27019",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 30066,
"optime" : Timestamp(1390450194, 3),
"optimeDate" : ISODate("2014-01-23T04:09:54Z"),
"lastHeartbeat" : ISODate("2014-01-23T09:34:22Z"),
"lastHeartbeatRecv" : ISODate("2014-01-23T09:34:21Z"),
"pingMs" : 0,
"syncingTo" : "wxlab31:27018"
},
{
"_id" : 3,
"name" : "wxlab31:27020",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 30066,
"optime" : Timestamp(1390450194, 3),
"optimeDate" : ISODate("2014-01-23T04:09:54Z"),
"lastHeartbeat" : ISODate("2014-01-23T09:34:21Z"),
"lastHeartbeatRecv" : ISODate("2014-01-23T09:34:22Z"),
"pingMs" : 0,
"syncingTo" : "wxlab31:27018"
}
],
"ok" : 1
}
欄位解釋:
- name是副本集節點的ip和埠資訊
- health表示副本集中該節點是否正常,0表示不正常,1表示正常
- state表示節點的身份,0表示非主節點,1表示主節點
- stateStr用於對節點身份進行字元描述,PRIMARY表示主節點,SECONDARY表示副節點
- uptime 從成員可到達一直到現在經歷的時間,單位是秒。
- optimeDate 每個成員oplog最後一次操作發生的時間,這個時間是心跳報上來的,因此可能會存在延遲
- lastHeartbeat 當前伺服器最後一次收到其他成員心跳的時間,如果網路故障等可能這個時間會大於2秒
- pinMs 心跳從當前伺服器達到某個成員所花費的平均時間
- syncingTo 當前伺服器從哪個節點在做同步
- self 這個資訊出現在執行rs.status()函式的成員資訊中
- errmsg 成員在心跳請求中返回的狀態資訊,通過是一些狀態資訊,不全是錯誤資訊。
health表示伺服器是否可達,可達是1,不可達是0
optime與optimeDate表達的資訊也是一樣的,只是表示的方式不同,一個是用新紀元開始的毫秒數表示的,一個是用一種更容易閱讀的方式表示。
由於rs.status()是從執行命令成員本身的角度得出的,由於網路等故障,這份報告可能不準確或者有些過時。