13

我已经在 3 个 mongo 服务器上设置了副本集并导入了 5 GB 数据。现在辅助服务器的状态显示“正在恢复”。您能否让我知道“恢复”的含义以及如何解决此问题。

状态如下

rs.status()
{
    "set" : "kutendarep",
    "date" : ISODate("2013-01-15T05:04:18Z"),
    "myState" : 3,
    "members" : [
        {
            "_id" : 0,
            "name" : "10.1.4.138:27017",
            "health" : 1,
            "state" : 3,
            "stateStr" : "RECOVERING",
            "uptime" : 86295,
            "optime" : Timestamp(1357901076000, 4),
            "optimeDate" : ISODate("2013-01-11T10:44:36Z"),
            "errmsg" : "still syncing, not yet to minValid optime 50f04941:2",
            "self" : true
        },
        {
            "_id" : 1,
            "name" : "10.1.4.21:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 86293,
            "optime" : Timestamp(1358160135000, 18058),
            "optimeDate" : ISODate("2013-01-14T10:42:15Z"),
            "lastHeartbeat" : ISODate("2013-01-15T05:04:18Z"),
            "pingMs" : 0
        },
        {
            "_id" : 2,
            "name" : "10.1.4.88:27017",
            "health" : 1,
            "state" : 3,
            "stateStr" : "RECOVERING",
            "uptime" : 86291,
            "optime" : Timestamp(1357900674000, 10),
            "optimeDate" : ISODate("2013-01-11T10:37:54Z"),
            "lastHeartbeat" : ISODate("2013-01-15T05:04:16Z"),
            "pingMs" : 0,
            "errmsg" : "still syncing, not yet to minValid optime 50f04941:2"
        }
    ],
    "ok" : 1
4

2 回答 2

12

“RECOVERING”副本集节点上的消息意味着这些节点仍在执行初始同步。这些节点在转换到辅助状态之前不可用于读取。

初始同步有几个步骤。

有关副本集同步过程的更多信息,请参见此处:http: //docs.mongodb.org/manual/core/replica-set-sync/

于 2013-03-04T15:07:25.037 回答
3

登录到 RECOVERING 实例。
检查RECOVERING实例复制状态
db.printReplicationInfo()
你会得到这样的结果,

oplog 首次活动时间:2019 年 7 月 30 日星期二 17:26:37 GMT+0000 (UTC)
oplog 上次活动时间:2019 年 7 月 31 日星期三 16:46:53 GMT+0000
现在:2019 年 8 月 22 日星期四 07:36:38 GMT+ 0000 (UTC)

如果你发现oplog last event timenow之间的区别。

这意味着这个特定的实例不是PRIMARYSECONDARY,也不是副本集的活动成员

现在有两个解决方案
首先
1. 登录到RECOVERING 实例2. 从现有db
中 删除数据,这将是/data/db 3. 重新启动此RECOVERING 实例 4. (可选)如果您发现以下错误。从指定位置删除该 mongod.pid。

Error starting mongod. /var/run/mongod/mongod.pid


5. 重启实例。
6. 现在您的恢复实例将处于运行状态
,它将显示 PRIMARY 或 Secondary 代替 RECOVERING。

其次
将其他正在运行的实例数据复制到RECOVERING 实例中重启 mongodb

于 2019-08-22T11:16:17.593 回答