Назад | Перейти на главную страницу

Как изменить версию протокола набора реплик в MongoDB.

Я пытаюсь изменить протокол набора реплик на pv1. У меня есть 5 серверов с набором реплик Mongo 3.6. Я использую документацию отсюда https://docs.mongodb.com/manual/reference/replica-set-protocol-versions/ внести эти изменения.

Документация довольно ясна, и операция кажется простой https://docs.mongodb.com/manual/reference/replica-set-protocol-versions/#modify-replica-set-protocol-version. На ПЕРВИЧНОМ сервере я выполнил эти три команды:

cfg = rs.conf();
cfg.protocolVersion=1;
rs.reconfig(cfg);

После этого я получаю:

rs.reconfig(cfg);
{
    "ok" : 1,
    "operationTime" : Timestamp(1531825299, 3),
    "$clusterTime" : {
        "clusterTime" : Timestamp(1531825299, 3),
        "signature" : {
            "hash" : BinData(0,"AIwmnD882cUdRgKYgGsRZg9Z4q0="),
            "keyId" : NumberLong("6577197549977862145")
        }
    }
}

Все выглядит хорошо, но после повторного входа на mongo я вижу вот это:

MongoDB shell version v3.6.6
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.6
Server has startup warnings: 
2018-07-10T22:50:39.164+0200 I REPL     [replexec-0] 
2018-07-10T22:50:39.164+0200 I REPL     [replexec-0] ** WARNING: This replica set was configured with protocol version 0.
2018-07-10T22:50:39.164+0200 I REPL     [replexec-0] **          This protocol version is deprecated and subject to be removed 
2018-07-10T22:50:39.164+0200 I REPL     [replexec-0] **          in a future version.

Я не знаю, что делаю не так? Любая помощь, почему эта операция не работает?

Вам необходимо перезапустить службу mongod после rs.reconfig (cfg). Реконфигурация изменит версию протокола, но будет активна после перезапуска. Сначала вам нужно перезапустить вторичный, затем сделать шаг вниз для первичного и перезапустить его также. После этого вы больше не увидите предупреждения.

В mongodb предупреждения генерируются во время запуска и будут отображаться в оболочке mongo до перезапуска. Это исторические предупреждения, и вы можете увидеть фактическую отметку времени, когда они были созданы.

Вы можете перезапустить mongodb только для того, чтобы скрыть эти исторические предупреждения.

Но нет необходимости перезапускать mongodb для изменения версии протокола, поскольку конфигурация репликации применяется на лету сразу после rs.reconfig().