0

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

1 回答 1

0

我找到的解决方案是从辅助数据库中删除整个数据库

# rm -rf /data/db
# mkdir -p /data/db

然后重新启动 mongo 并设置副本集。

在Mongo 的文档中查看更多信息

RS102 同步错误怎么办

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

于 2012-11-05T12:20:28.933 回答