我有一个包含 1 个主节点、1 个辅助节点和 1 个仲裁节点的副本集。当我关闭辅助成员时,我无法删除数据库。它在等待某事。但是,如果我打开辅助成员,dropDatabase 就可以了。这是什么原因呢?我们不能在没有任何辅助成员的情况下删除数据库吗?
最佳答案
自 MongoDB 3.6 起,dropDatabase
现在带有一个writeConcern
。默认情况下设置为majority
。这意味着,在 3 个复制集集群中,至少有 2 个数据承载节点(不是仲裁器)需要应用相同的更改。
如果您确实需要,可以通过使用 writeConcern
为 1
来强制 dropDatabase
仅使用一个数据承载节点来完成。但是,这可能会导致 rollback .
有关writeConcern
以及如何设置的更多信息,请参阅文档:
https://docs.mongodb.com/manual/reference/write-concern/
关于当辅助数据库关闭时,mongodb 无法删除数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55136731/