MongoDB。新添加的副本集成员无法显示数据库

MongoDB. Newly added replicaset members can't show databases

我有一个 Replicaset 运行 1 个主副本和 4 个副副本。 新添加的两个辅助节点让我在 show databases 命令上出错。

replicaset:SECONDARY> use admin

switched to db admin

replicaset:SECONDARY> show databases

listDatabases failed:{ "note" : "from execCommand", "ok" : 0, "errmsg" : "not > master" } at src/mongo/shell/mongo.js:47

rs.status() 二级都可以。健康 1,状态 2。

rs.conf() 有(当然 host/port 除外)差异:

在较旧的辅助设备上使用命令只会返回: _id、主机和优先级。

较新的次级有: _id、host、arbiterOnly、buildIndexes、hidden、priority、tags、slaveDelay、votes 和一个完整的设置节点:chainingAllowed、heartbeatTimeoutSecs、getLastErrorModes、getLastErrorDefaults。 很奇怪,因为使用 rs.add(host:port).

以相同的方式添加了成员

db.version(): - 较旧的中学和小学:2.6.5 - 较新的次要版本:3.0.6

其他两个(较旧的)辅助节点使用 Show Databases 命令完全没有问题。 这似乎与较新的 3.0.6 版本有关。 使用 db.SlaveOK 有助于 3.0.6。 , 但不能作为参数使用 mongodump.exe.

知道如何在辅助节点上默认使用“显示数据库”命令吗?

这是正常行为。

根据manual你需要执行

rs.slaveOk()

它为以下操作提供了一个shorthand:

db.getMongo().setSlaveOk()

这允许当前连接允许对次要成员的 运行 进行读取操作。请参阅 readPref() 方法以更细粒度地控制 mongo shell.

中的读取首选项