MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

सेकेंडरी को कैसे चेक करें अभी सिंक किया गया है या नहीं

नोट :उत्तर की जांच अवश्य करें। arcseldon द्वारा प्रदान किया गया उपयोगकर्ता के अनुकूल समकक्ष के लिए।

आप rs.status() . के आउटपुट का उपयोग कर सकते हैं . अगर सेकेंडरी को सिंक किया गया है और slaveDelay . के साथ नहीं बनाया गया है विकल्प तो optime और optimeDate माध्यमिक के बराबर या करीब होना चाहिए (यदि वर्तमान संचालन हैं) प्राथमिक के लिए। उस स्थिति में stateStr SECONDARY . के बराबर होना चाहिए . इसलिए यदि सेकेंडरी सिंक किया गया है तो आपको इसके समान आउटपुट देखना चाहिए (स्पष्टता के लिए आउटपुट से एक सदस्य को हटा दिया गया है):

 {
    "set" : "rs0",
    "date" : ISODate("2013-11-08T14:58:49Z"),
    "myState" : 1,
    "members" : [
        {
            "_id" : 0,
            "name" : "hostname:27001",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 155,
            "optime" : Timestamp(1383915748, 1),
            "optimeDate" : ISODate("2013-11-08T13:02:28Z"),
            "self" : true
        },

        {
            "_id" : 2,
            "name" : "hostname:27003",
            "health" : 0,
            "state" : 8,
            "stateStr" : "SECONDARY",
            "uptime" : 0,
            "optime" : Timestamp(1383915748, 1),
            "optimeDate" : ISODate("2013-11-08T13:02:28Z"),
            "lastHeartbeat" : ISODate("2013-11-08T14:58:48Z"),
            "lastHeartbeatRecv" : ISODate("2013-11-08T14:58:42Z"),
            "pingMs" : 0,
            "syncingTo" : "hostname:27001"
        }
    ],
    "ok" : 1
}

यहां आपके पास rs.status() . का आउटपुट है उसी प्रतिकृति सेट के लिए यदि सेकेंडरी में से कोई एक सिंक नहीं किया गया है। सबसे पहले आप देखेंगे कि optime और optimeDate hostname:27003 . के लिए प्राथमिक से अलग, StateStr RECOVERING . पर सेट है और उपयुक्त lastHeartbeatMessage . है .

{
    "set" : "rs0",
    "date" : ISODate("2013-11-08T15:01:34Z"),
    "myState" : 1,
    "members" : [
        {
            "_id" : 0,
            "name" : "hostname:27001",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 320,
            "optime" : Timestamp(1383922858, 767),
            "optimeDate" : ISODate("2013-11-08T15:00:58Z"),
            "self" : true
        },

        {
            "_id" : 2,
            "name" : "hostname:27003",
            "health" : 1,
            "state" : 3,
            "stateStr" : "RECOVERING",
            "uptime" : 14,
            "optime" : Timestamp(1383915748, 1),
            "optimeDate" : ISODate("2013-11-08T13:02:28Z"),
            "lastHeartbeat" : ISODate("2013-11-08T15:01:34Z"),
            "lastHeartbeatRecv" : ISODate("2013-11-08T15:01:34Z"),
            "pingMs" : 0,
            "lastHeartbeatMessage" : "still syncing, not yet to minValid optime 527cfc90:19c4",
            "syncingTo" : "hostname:27001"
        }
    ],
    "ok" : 1
}

अगर सेकेंडरी को slaveDelay . के साथ बनाया गया है फिर optime और optimeDate अलग हो सकता है लेकिन stateStr और lastHeartbeatMessage कुछ अंतराल होने पर इंगित करेगा।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. बीएसओएन स्पेक उदाहरणों की बेहतर व्याख्या?

  2. मैं MongoDB के लिए एक क्वेरी में रेगेक्स चर का उपयोग कैसे कर सकता हूं?

  3. विभिन्न मूल्यों के साथ mongoDB में कई दस्तावेज़ अपडेट करें

  4. MongoDB में छवियों को स्टोर करें

  5. $switch . का उपयोग करके MongoDB एकत्रीकरण में स्कोर जोड़ना