将成员添加到MongoDb上的副本集

sic*_*icr 20 database master-slave mongodb

我正在尝试使用MongoDb创建副本集,服务器主机名是:

hostname hostname-1 hostname-2

其中每个都有/ etc/hosts文件中详细说明的所有相关主机名(它们都是运行Ubuntu 10.04 64位)

当我在一个节点上执行rs.initiate时,一切似乎都开始好了.运行rs.status(); 说明:

{
    "set" : "vega",
    "date" : ISODate("2012-01-22T19:15:55Z"),
    "myState" : 1,
    "members" : [
        {
            "_id" : 0,
            "name" : "hostname:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "optime" : {
                "t" : 1327254848000,
                "i" : 1
            },
            "optimeDate" : ISODate("2012-01-22T17:54:08Z"),
            "self" : true
        }
    ],
    "ok" : 1
}
Run Code Online (Sandbox Code Playgroud)

当我尝试将新成员添加到副本集时,问题就出现了.我使用命令rs.add(hostname-1); 我收到以下错误:

{
    "assertion" : "need most members up to reconfigure, not ok : vega-1:27017",
    "assertionCode" : 13144,
    "errmsg" : "db assertion failure",
    "ok" : 0
}
Run Code Online (Sandbox Code Playgroud)

我尝试过使用主机名,IP地址的多种组合,无论是否有端口号,我总是遇到同样的问题.主机名正在解析,我已经尝试过ping hostname-1,它运行正常.

有没有人对可能导致这个问题的原因有任何想法?

不幸的是,在Mongo文档中没有在现实世界场景中设置副本集的示例,只在同一台机器上使用三个实例,这显然是无用的.

在此先感谢您的帮助!

小智 14

在配置中删除它:

bind_ip = 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

该选项目前与mongodb副本集不兼容.

  • 或者将其设置为bind_ip = 0.0.0.0 (3认同)

pha*_*ckk 10

当您添加尚未"启动"的节点时,会发生该错误.听起来好像"hostname-1"无法访问(不在/ etc/hosts中,没有DNS)或者它是可以访问的但是没有使用replSet配置参数集运行mongodb


Gat*_* VP 2

不幸的是,在 Mongo 文档中没有在现实场景中设置副本集的示例,仅在同一台机器上使用三个实例,这显然是无用的。

同意,确实很穷。该示例应该从文档中完全删除。

还有另一种启动副本集的方法,那就是使用命令rs.configure()。您还可以一次指定所有三个节点,然后发出rs.inititiate().

有关启动前指定所有节点的示例,请参阅此处。

有关各种命令的更多详细信息,请参见此处。