MongoDB 前台索引构建阻止所有数据库的二次读取

MongoDB 前台索引构建阻止所有数据库的二次读取

今天,我们的 MongoDB 3.0.12 分片集群的一位用户(错误地)在其自己的数据库(pride_archive_ms)上发布了前台索引构建,在每个副本集(分片)的主成员上完成操作后,它被复制到辅助成员。

我原本以为索引构建仍在进行的数据库会被阻止读写,但实际上全部使用 secondary 或 secondaryPreferred 读取首选项时,数据库的读/写操作会被阻止。任何打开的会话都将被附加。这是预期的行为吗?文档报告称:

任何需要对所有数据库进行读或写锁定的操作(例如 listDatabases)都将等待前台索引构建完成。

但在我们的例子中,在与建立索引的数据库不同的数据库上执行简单的 find()。

有人可以解释一下吗?

谢谢

答案1

托马斯·舒伯特(Thomas Schubert)在以下文章中回答了这个问题:

https://jira.mongodb.org/browse/SERVER-25168

secondaryPreferred不过,我想知道为什么当指定读取首选项时,路由器没有检测到读锁定的辅助服务器并提供来自主服务器的查询。

相关内容