mongodb replicaset主机名更改错误

Fat*_*mez 7 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
            }
    ]
Run Code Online (Sandbox Code Playgroud)

}

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

{
    "assertion" : "hosts cannot switch between localhost and hostname",
    "assertionCode" : 13645,
    "errmsg" : "db assertion failure",
    "ok" : 0
Run Code Online (Sandbox Code Playgroud)

}

我怎么解决呢?谢谢.

Sco*_*ott 22

有一种更简洁的方法:

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

然后重启mongo

  • 这解决了更改主机的错误,但我发现我还必须执行cfg = rs.conf(); rs.reconfig(CFG); 重启后做这个棒. (2认同)

Fat*_*mez 1

我发现更改主机名的唯一方法是重新创建副本集。为了使其正确,需要清理数据库目录。然后以复制模式启动所有服务器,然后使用新主机名创建新的重复集修复它。