最近經常遇到數據庫卡頓,連接異常問題,需要鏈接到數據庫內,常用到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
}
字段解釋:
- self 這個信息出現在執行rs.status()函數的成員信息中
- stateStr用戶描述服務器狀態的字符串。有SECONDARY,PRIMARY,RECOVERING等
- uptime 從成員可到達一直到現在經歷的時間,單位是秒。
- optimeDate 每個成員oplog最后一次操作發生的時間,這個時間是心跳報上來的,因此可能會存在延遲
- lastHeartbeat 當前服務器最后一次收到其他成員心跳的時間,如果網絡故障等可能這個時間會大於2秒
- pinMs 心跳從當前服務器達到某個成員所花費的平均時間
- errmsg 成員在心跳請求中返回的狀態信息,通過是一些狀態信息,不全是錯誤信息。
health表示是否服務器可達,可達是1,不可達是0
optime與optimeDate表達的信息也是一樣的,只是表示的方式不同,一個是用新紀元開始的毫秒數表示的,一個是用一種更容易閱讀的方式表示。
syncingTo表示當前服務器從哪個節點在做同步。
由於rs.status()是從執行命令成員本身的角度得出的,由於網路等故障,這份報告可能不准確或者有些過時。