mongodb - 在 J=1 和 W=Majority 的 MongoDB 副本集上是否仍然可以回滚?

标签 mongodb replication rollback failover

我一直在阅读文档,根据我的理解,我可以看到一个仍然可能发生回滚的场景:

  • 写入确认日志已写入磁盘的主节点
  • 大多数从节点确认写入但不写入磁盘
  • 整个集群断电
  • 由于某种原因,主电源在恢复供电后无法启动备份
  • 次要角色担任主要角色
  • 原来的primary终于启动了,作为secondary重新加入集合并回滚

这种情况是否合理?

最佳答案

如果其他成员在获取命令和写入磁盘之间发生电源故障,这可能是回滚的合理情况。

在这种情况下,正如您所指出的,主节点无法启动备份,因此一旦备份,将包含该集合的其余部分无法验证的操作,从而导致回滚。

还需要注意的是,作为一个曲线球,如果主 没有关闭,那么它会返回一个成功的写入,并且应用程序不会知道集合已经消失下来,他们的 {w: majority} 没有写入磁盘。当然,这是一个边缘案例。

关于mongodb - 在 J=1 和 W=Majority 的 MongoDB 副本集上是否仍然可以回滚?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22410831/

相关文章:

mysql - 有人知道将数据从 MongoDB 转储到 MySQL 的简单方法吗?

mysql - 两台mysql服务器使用同一个数据库

mysql - MySQL复制-单个数据库与多个数据库,多个数据库或多个表

git - git revert 后回滚到原始状态

返回 PHP PDO 错误消息,但回滚不起作用

mongodb - Node + Mongoose : Get last inserted ID?

java - 从 mongo 更新内部文档

node.js - Mongoose - (MongoDB) 中不同集合的相同模式

c# - MongoDB C# 驱动程序 : connection string for sharding over replica set

MySQL/MariaDB 不回滚事务