MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách kiểm tra phụ hiện đã được đồng bộ hóa hay chưa

Lưu ý :Đảm bảo kiểm tra câu trả lời được cung cấp bởi arcseldon cho một tương đương thân thiện với người dùng.

Bạn có thể sử dụng đầu ra của rs.status() . Nếu phụ được đồng bộ hóa và không được tạo bằng slaveDelay rồi đến tùy chọn optimeoptimeDate của thứ cấp phải bằng hoặc gần (nếu có hoạt động hiện tại) với của chính. Trong trường hợp đó stateStr phải bằng SECONDARY . Vì vậy, nếu thứ cấp được đồng bộ hóa, bạn sẽ thấy đầu ra tương tự như thế này (một thành viên đã bị xóa khỏi đầu ra cho rõ ràng):

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

Ở đây bạn có đầu ra của rs.status() cho cùng một tập hợp bản sao nếu một trong các thư thứ hai không được đồng bộ hóa. Trước hết, bạn sẽ thấy rằng optimeoptimeDate cho hostname:27003 khác với chính, stateStr được đặt thành RECOVERING và có lastHeartbeatMessage thích hợp .

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

Nếu phụ đã được tạo bằng slaveDelay sau đó optimeoptimeDate có thể khác nhau nhưng stateStrlastHeartbeatMessage sẽ cho biết nếu có một số độ trễ.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Trước khi $ unwind, hãy kiểm tra xem tài liệu con có trống không

  2. Mongoimport bỏ qua số 0 đứng đầu trong csv

  3. i18Next - NodeJS - Cách thay đổi bản dịch mà không cần tải lại máy chủ

  4. Nhóm theo khoảng thời gian ngày

  5. Có cách nào để lưu loại Ngày làm giờ địa phương trong MongoDB không?