МонгоДБ. Недавно добавленные члены набора реплик не могут отображать базы данных

У меня есть Replicaset, работающий с 1 первичным и 4 вторичными. Недавно добавленные два вторичных сервера выдают ошибку при выполнении команды show databases.

replicaset:SECONDARY> использовать администратора

переключился на админку бд

replicaset:SECONDARY> показать базы данных

Ошибка listDatabases: { "примечание": "из execCommand", "ok" : 0, "errmsg": "не > мастер" } в src/mongo/shell/mongo.js:47

rs.status() все в порядке для вторичных. Здоровье 1, состояние 2.

rs.conf() имеет (кроме хоста/порта, конечно) разницу:

Использование команды на более старых вторичных серверах возвращает только: _id, хост и приоритет.

Более новые вторичные узлы имеют: _id, host, arbiterOnly, buildIndexes, hidden, priority, tags, slaveDelay, voices и целый узел настроек с: chainingAllowed, heartbeatTimeoutSecs, getLastErrorModes, getLastErrorDefaults. Странно, потому что участники были добавлены таким же образом, используя rs.add(хост:порт).

db.version(): — Старые вторичные и первичные: 2.6.5 — Новые вторичные: 3.0.6

У двух других (старых) вторичных серверов вообще нет проблем с командой Show Databases. Кажется, это связано с более новой версией 3.0.6. Использование db.SlaveOK помогает на 3.0.6. , но не может быть задан в качестве параметра с помощью mongodump.exe.

Любая идея, как я могу использовать команду «Показать базы данных» по умолчанию на вторичных серверах?


person Igor Bicanic    schedule 24.06.2016    source источник


Ответы (1)


Это нормальное поведение.

В соответствии с руководством вам необходимо выполнить

rs.slaveOk()

который обеспечивает сокращение для следующей операции:

db.getMongo().setSlaveOk()

Это позволяет текущему соединению разрешить выполнение операций чтения на вторичных элементах. См. метод readPref() для более точного управления предпочтениями чтения в оболочке mongo.

person profesor79    schedule 24.06.2016