自从我在mongodb中添加了一个新数据库后,它就停止了同步replicaSet辅助实例,即在运行show dbs
时显示数据库名称但显示为(empty)
辅助的日志文件中存在重复错误,该错误也会出现在
中"errmsg" : "syncTail: ...
下面是主要
上rs.Status()的输出PRIMARY> rs.status()
{
"set" : "contoso_db_set",
"date" : ISODate("2012-11-01T13:05:22Z"),
"myState" : 1,
"syncingTo" : "dbuse1d.int.contoso.com:27017",
"members" : [
{
"_id" : 0,
"name" : "dbuse1a.int.contoso.com:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"optime" : {
"t" : 1351775119000,
"i" : 2
},
"optimeDate" : ISODate("2012-11-01T13:05:19Z"),
"self" : true
},
{
"_id" : 1,
"name" : "dbuse1d.int.contoso.com:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 4108139,
"optime" : {
"t" : 1351405977000,
"i" : 12
},
"optimeDate" : ISODate("2012-10-28T06:32:57Z"),
"lastHeartbeat" : ISODate("2012-11-01T13:05:21Z"),
"pingMs" : 1,
"errmsg" : "syncTail: 10068 invalid operator: $oid, syncing: { ts: Timestamp 1351576230000|1, h: -2878874165043062831, op: \"i\", ns: \"new_contoso_db.accounts\", o: { _id: { $oid: \"4f79a1d1d4941d3755000000\" }, delegation: [ \"nE/UhsnmZ1BCCB+tiiS8fjjNwkxbND5PwESsaXeuaJw=\""
},
{
"_id" : 2,
"name" : "dbuse1a.int.contoso.com:8083",
"health" : 1,
"state" : 7,
"stateStr" : "ARBITER",
"uptime" : 10671267,
"optime" : {
"t" : 0,
"i" : 0
},
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" : ISODate("2012-11-01T13:05:21Z"),
"pingMs" : 0
}
],
"ok" : 1
}
PRIMARY>
答案 0 :(得分:1)
我找到的解决方案是从辅助
中删除整个数据库# rm -rf /data/db
# mkdir -p /data/db
然后重新启动mongo并设置replicaSet。
了解详情如何处理RS102同步错误
如果您的某位成员已离线,现在已经太落后了 赶上来,你需要重新同步。有很多方法可以做 这个。 执行完全重新同步。如果你停止失败的mongod,删除dbpath中的所有数据(包括子目录),然后重新启动它,它将 自动重新同步自己。显然它会更好/更安全 首先备份数据。如果磁盘空间足够,只需移动它即可 如果合适,到机器上的备份位置。重新同步可能需要 很长一段时间,如果数据库庞大或网络速度慢 - 甚至 理想化的1TB数据需要三个小时才能传输 超过千兆以太网。*