mongodb replicaset同步失败

时间:2012-11-01 13:11:55

标签: mongodb replication

自从我在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> 

1 个答案:

答案 0 :(得分:1)

我找到的解决方案是从辅助

中删除整个数据库
# rm -rf /data/db
# mkdir -p /data/db

然后重新启动mongo并设置replicaSet。

Mongo's doc

了解详情
  

如何处理RS102同步错误

     

如果您的某位成员已离线,现在已经太落后了   赶上来,你需要重新同步。有很多方法可以做   这个。        执行完全重新同步。如果你停止失败的mongod,删除dbpath中的所有数据(包括子目录),然后重新启动它,它将   自动重新同步自己。显然它会更好/更安全   首先备份数据。如果磁盘空间足够,只需移动它即可   如果合适,到机器上的备份位置。重新同步可能需要   很长一段时间,如果数据库庞大或网络速度慢 - 甚至   理想化的1TB数据需要三个小时才能传输   超过千兆以太网。*