Как изменить версию протокола набора реплик в 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.

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

0
задан 17 July 2018 в 14:30
2 ответа

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

1
ответ дан 4 December 2019 в 15:53

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

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

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

0
ответ дан 5 June 2020 в 06:45

Теги

Похожие вопросы