Mongodb副本设置状态显示"RECOVERING"

raj*_*jub 8 replication mongodb

我已经在3 mongo服务器上设置了副本集并导入了5 GB数据.现在显示"RECOVERING"的辅助服务器的状态.你能让我知道"恢复"的方法是什么以及如何解决这个问题.

状态如下

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
Run Code Online (Sandbox Code Playgroud)

小智 11

登录到 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(世界标准时间)

如果您发现oplog 上次事件时间现在之间的差异。

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

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

Error starting mongod. /var/run/mongod/mongod.pid
Run Code Online (Sandbox Code Playgroud)


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

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


Gia*_* P. 10

"RECOVERING"副本集节点上的消息表示这些节点仍在执行初始同步.这些节点在转换到辅助状态之前不可用于读取.

初始同步有几个步骤.

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