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 optime
và optimeDate
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 optime
và optimeDate
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 đó optime
và optimeDate
có thể khác nhau nhưng stateStr
và lastHeartbeatMessage
sẽ cho biết nếu có một số độ trễ.