irm*_*eza 25 mongodb replicaset
有三个成员(主要,次要,次要)的副本.假设其中一个辅助人员倒了一天,在返回辅助设备后我怎么能找到,是否已经同步?
我在测试环境中做到了这一点,但无法从rs.status()和找到有用的数据db.printReplicationInfo().
在"日志长度开始结束"中db.printReplicationInfo().但是默认情况下这是很重要的时间,并且在次要故障时会增长.
zer*_*323 31
注意:请务必检查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
}
Run Code Online (Sandbox Code Playgroud)
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
}
Run Code Online (Sandbox Code Playgroud)
如果二次一直与创建slaveDelay那么optime和optimeDate可以不同,但stateStr和lastHeartbeatMessage将表明,如果有一定的滞后性.
arc*_*don 24
2017年2月13日更新
同意接受的答案,rs.status()提供足够的信息,并且很容易记住.但是,(现在个人使用Mongo 3),也非常喜欢它的便利性和可读性rs.printSlaveReplicationInfo().
它给出了类似的输出:
rs.printSlaveReplicationInfo()
source: node-2:27017
syncedTo: Mon Feb 13 2017 06:15:17 GMT-0500 (EST)
0 secs (0 hrs) behind the primary
source: node-3:27017
syncedTo: Mon Feb 13 2017 06:15:16 GMT-0500 (EST)
1 secs (0 hrs) behind the primary
Run Code Online (Sandbox Code Playgroud)
如您所见,很容易理解副本集中节点之间的同步是否健康.
| 归档时间: |
|
| 查看次数: |
26451 次 |
| 最近记录: |