mongodb replicaset主机名更改错误

时间:2011-10-31 13:43:04

标签: mongodb

我在ubuntu上有一个mongodb replicaset ..在副本集中,主机被定义为localhost。你可以看到;

{
    "_id" : "myrep",
    "version" : 4,
    "members" : [
            {
                    "_id" : 0,
                    "host" : "localhost:27017"
            },
            {
                    "_id" : 2,
                    "host" : "localhost:27018"
            },
            {
                    "_id" : 1,
                    "host" : "localhost:27019",
                    "priority" : 0
            }
    ]

}

我想用真正的服务器IP更改主机地址。但是当我运行rs.reconfig时,我收到错误:

{
    "assertion" : "hosts cannot switch between localhost and hostname",
    "assertionCode" : 13645,
    "errmsg" : "db assertion failure",
    "ok" : 0

}

我该如何解决? 谢谢。

2 个答案:

答案 0 :(得分:22)

有一种更简洁的方法:

use local
cfg = db.system.replset.findOne({_id:"replicaSetName"})
cfg.members[0].host="newHost:27017"
db.system.replset.update({_id:"replicaSetName"},cfg)

然后重启mongo

答案 1 :(得分:1)

我发现更改主机名的唯一方法是重新创建副本集。为了使其正确,需要清理db目录。然后在创建具有新主机名的新副本集后,启动所有具有复制模式的服务器。< / p>