Ошибка изменения имени хоста реплики mongodb - PullRequest
7 голосов
/ 31 октября 2011

У меня есть репликация mongodb в Ubuntu. В наборе реплик хосты определяются как 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 ]

22 голосов
/ 22 ноября 2011

Есть более чистый способ сделать это:

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

затем перезапустите mongo

1 голос
/ 07 ноября 2011

Единственный способ изменить имена хостов, который я нашел, - воссоздать набор реплик. Чтобы сделать это правильно, необходимо очистить каталоги БД. Затем запустили все серверы в режиме репликации, после чего создав новый репсет с новыми именами хостов, исправили его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...