1. 程式人生 > >MongoDB下rs.status()命令

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()是從執行命令成員本身的角度得出的,由於網路等故障,這份報告可能不準確或者有些過時。