MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana cara memeriksa sekunder disinkronkan sekarang atau tidak

Catatan :Pastikan untuk memeriksa jawabannya disediakan oleh arcseldon untuk setara yang ramah pengguna.

Anda dapat menggunakan output rs.status() . Jika sekunder disinkronkan dan tidak dibuat dengan slaveDelay pilihan lalu optime dan optimeDate sekunder harus sama atau dekat (jika ada operasi saat ini) dengan operasi primer. Dalam hal ini stateStr harus sama dengan SECONDARY . Jadi jika sekunder disinkronkan, Anda akan melihat keluaran yang mirip dengan ini (satu anggota telah dihapus dari keluaran untuk kejelasan):

 {
    "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
}

Di sini Anda memiliki output rs.status() untuk set replika yang sama jika salah satu sekunder tidak disinkronkan. Pertama-tama Anda akan melihat optime dan optimeDate untuk hostname:27003 berbeda dari primer, stateStr diatur ke RECOVERING dan ada lastHeartbeatMessage yang sesuai .

{
    "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
}

Jika sekunder telah dibuat dengan slaveDelay lalu optime dan optimeDate bisa berbeda tapi stateStr dan lastHeartbeatMessage akan menunjukkan jika ada jeda.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Hapus objek referensi secara otomatis saat dihapus di MongoDB

  2. Permintaan mongodb untuk mengembalikan dokumen yang dibuat hari ini

  3. Memperbarui lebih dari satu dokumen MongoDB di NodeJS sepertinya tidak berfungsi

  4. Apa perbedaan luwak dan mongoJS? Yang mana yang harus saya gunakan?

  5. menu mean.js adalahPublik tidak berfungsi