在RECOVERY中恢复MongoDB配置副本集

我在3.2中有一个MongoDB分片群集。 最近我遇到了一个WiredTigerLAS.wt文件,该文件在数据文件夹中为我的一个辅助节点的配置服务器副本集进行了控制。 这个配置服务器副本集有3个服务器。

考虑到它是一个副本集中的文件,我只是关闭了配置服务器副本集的所有mongod实例以及分片和mongos实例。 然后我删除了受影响的辅助设备的配置服务器副本集的数据文件夹的WiredTigerLAS.wt。 我期望启动配置服务器副本集的mongod实例,并在初始同步时正确恢复它,但事实并非如此。 相反,我的mongod实例不会仅仅持续几秒钟。

在https://docs.mongodb.com/manual/tutorial/resync-replica-set-member/之后,我决定手动将配置副本集的数据文件从主要副本复制到次要受影响的服务器,然后重新开始。 问题是,在这样做之后,我的所有服务器都进入了RECOVERY状态,持续了4天,看起来它没有同步。 我在下面列出了rs.status()所显示的消息(它显示了所有服务器处于RECOVERY状态,并且在所谓的主服务器中显示消息“找不到要同步的成员”):

confreplSet:RECOVERING> rs.status()
{
        "set" : "confreplSet",
        "date" : ISODate("2017-09-21T16:03:41.471Z"),
        "myState" : 3,
        "term" : NumberLong(28),
        "configsvr" : true,
        "heartbeatIntervalMillis" : NumberLong(2000),
        "members" : [
                {
                        "_id" : 0,
                        "name" : "vm01170-htskernelmongo01v:27100",
                        "health" : 1,
                        "state" : 3,
                        "stateStr" : "RECOVERING",
                        "uptime" : 1279,
                        "optime" : {
                                "ts" : Timestamp(1503957698, 3),
                                "t" : NumberLong(28)
                        },
                        "optimeDate" : ISODate("2017-08-28T22:01:38Z"),
                        "infoMessage" : "could not find member to sync from",
                        "configVersion" : 1,
                        "self" : true
                },
                {
                        "_id" : 1,
                        "name" : "vm01171-htskernelmongo02v:27100",
                        "health" : 1,
                        "state" : 3,
                        "stateStr" : "RECOVERING",
                        "uptime" : 1278,
                        "optime" : {
                                "ts" : Timestamp(1503957698, 3),
                                "t" : NumberLong(28)
                        },
                        "optimeDate" : ISODate("2017-08-28T22:01:38Z"),
                        "lastHeartbeat" : ISODate("2017-09-21T16:03:39.055Z"),
                        "lastHeartbeatRecv" : ISODate("2017-09-21T16:03:40.913Z"),
                        "pingMs" : NumberLong(0),
                        "configVersion" : 1
                },
                {
                        "_id" : 2,
                        "name" : "vm01172-htskernelmongo03v:27100",
                        "health" : 1,
                        "state" : 3,
                        "stateStr" : "RECOVERING",
                        "uptime" : 1278,
                        "optime" : {
                                "ts" : Timestamp(1503957698, 3),
                                "t" : NumberLong(28)
                        },
                        "optimeDate" : ISODate("2017-08-28T22:01:38Z"),
                        "lastHeartbeat" : ISODate("2017-09-21T16:03:39.054Z"),
                        "lastHeartbeatRecv" : ISODate("2017-09-21T16:03:41.106Z"),
                        "pingMs" : NumberLong(0),
                        "configVersion" : 1
                }
        ],
        "ok" : 1
}

我也考虑过https://docs.mongodb.com/manual/tutorial/restore-replica-set-from-backup/使用配置服务器副本集的数据文件,但问题是我无法重新启动副本集(当我用我的数据文件启动mongod实例时,我的副本集已经在所有服务器上启动了),并且我无法删除服务器,因为一切都在RECOVERY中,我现在没有主服务器。

任何帮助? 非常感谢你提前

链接地址: http://www.djcxy.com/p/61659.html

上一篇: Restoring MongoDB config replica set stucked in RECOVERY

下一篇: metricbeat Mongo secondary node "no reachable servers" error