其中一个副本成员未经授权

时间:2014-06-04 14:25:17

标签: mongodb database-replication

我已将mongolab实例添加到副本集中。 rs.status()看起来像这样:

            {
                    "_id" : 2,
                    "name" : "*****.mongolab.com:*****",
                    "health" : 0,
                    "state" : 6,
                    "stateStr" : "(not reachable/healthy)",
                    "uptime" : 0,
                    "optime" : Timestamp(0, 0),
                    "optimeDate" : ISODate("1970-01-01T00:00:00Z"),
                    "lastHeartbeat" : ISODate("2014-06-04T14:14:01Z"),
                    "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
                    "pingMs" : 141,
                    "authenticated" : false
            }

如何授权mongolab实例?

1 个答案:

答案 0 :(得分:1)

好的 - 首先关闭永远不要创建一个由2个成员组成的副本 - 如果你失去了一个,你将失去法定人数并且无法写信给幸存的成员。您至少需要3名成员,并且应始终是奇数个投票成员。如果您不想要3份数据副本,可以使用仲裁者作为其中一名成员。

http://docs.mongodb.org/manual/tutorial/deploy-replica-set/

更重要的是,我不相信你可以做你想做的事。作为副本集成员的MongoDB实例需要使用--replicaset""然后在用rs.initialize()初始化第一个成员后通过rs.add()添加到副本集。

MongoLab提供共享主机,并且他们的大部分单实例计划都不是副本集,因此我不知道如何以这种方式添加它们。

我认为可以从MongoLab的副本集计划开始,然后从本地系统添加新成员,但我还没有尝试过。在尝试之前,我会直接询问他们是否支持,应该节省您的时间和金钱。无论如何,MongoLab的副本集计划每个月的成本远高于他们的单个共享计划,所以请记住这一点。