【问题标题】:Mongo DB - difference between standalone & 1-node replica setMongo DB - 独立和 1 节点副本集之间的区别
【发布时间】:2019-10-13 14:55:23
【问题描述】:

我需要使用 Mongo DB 事务,最近我了解到事务不适用于 Mongo 独立模式,而仅适用于副本集 (Mongo DB with C# - document added regardless of transaction)。
另外,我读到不建议将独立模式用于生产。

所以我发现只需在 mongod.cfg 中定义副本集名称就足以将 Mongo DB 作为副本集而不是独立运行。
更改后,Mongo 事务开始工作。
但是,虽然我并没有真正使用复制功能,但使用它作为副本集感觉有点奇怪,我想确保我使用的是有效的配置。

所以我的问题是:

  1. 假设我真的不需要复制、负载平衡或任何其他可扩展功能,将 Mongo 作为 1 节点副本集运行是否有任何问题/劣势? (如前所述,我需要它来允许交易)
  2. 作为独立运行与作为 1 节点副本集运行之间有哪些功能和性能差异(如果有)?
  3. 我了解到不建议将独立模式用于生产,尽管它听起来像是最基本的配置。我了解大多数情况下不会使用此配置,但有时您可能希望将其用作本地计算机上的标准数据库。那么为什么不推荐独立模式呢?是不够稳定,还是其他原因?

【问题讨论】:

  • 感谢您的提问。我也有同样的问题,你的问题和答案对我有帮助

标签: mongodb replicaset mongodb-replica-set


【解决方案1】:

我觉得kevinadi回答得很好,但我还是想补充一下。

standalone 是在单个服务器上运行但不属于副本集的 mongod 实例。用于测试和开发的独立实例,但始终建议在生产中使用副本集。

单节点副本集将具有记录对其数据集的所有更改的操作日志。这意味着您将使用更多磁盘空间来存储 oplog,并且任何插入/更新操作也将写入 oplog(写入放大)。它还支持时间点恢复。

如果您想将独立数据库转换为副本集,请按照将独立数据库转换为副本集。

事务已在 MongoDB 4.0 版中引入。从 4.0 版本开始,对于需要原子性来更新多个文档或读取多个文档之间的一致性的情况,MongoDB 为副本集提供了多文档事务。该事务在独立时不可用,因为它需要 oplog 在集群内保持强一致性。

【讨论】:

  • 既然我们需要事务,那么单节点副本集不会有问题,只是额外的oplog,不是吗?
【解决方案2】:

假设我真的不需要复制、负载平衡或任何其他可扩展功能,将 Mongo 作为 1 节点副本集运行是否有任何问题/缺点?

您没有适当的副本集提供的高可用性。因此,不建议将其用于生产部署。不过这对开发来说很好。

请注意,副本集的功能主要是关于高可用性而不是扩展。

作为独立运行与作为 1 节点副本集运行之间有哪些功能和性能差异(如果有)?

单节点副本集将具有 oplog。这意味着您将使用更多磁盘空间来存储 oplog,并且任何插入/更新操作也会写入 oplog(写入放大)。

那么为什么不推荐独立模式呢?是不够稳定,还是其他原因?

生产中的 MongoDB 在设计时考虑了副本集部署,用于:

  • 面对节点故障时的高可用性
  • 滚动维护/升级,无需停机
  • 横向扩展读取的可能性
  • 可以在不属于高可用性节点的专用节点中拥有数据副本

简而言之,MongoDB 被设计为一个容错分布式数据库(水平扩展),而不是典型的 SQL 单体数据库(垂直扩展)。这个想法是,如果您丢失了副本集的一个节点,其他节点将立即接管。大多数时候,您的应用程序甚至都不知道数据库端出现了故障。相反,单片数据库服务器的故障会立即中断您的应用程序。

【讨论】:

  • 我获得了可扩展性和高可用性的好处,但是如果我只需要一个文档数据库而不是关系数据库怎么办?我的场景是每台机器都需要一个本地数据库,因为它必须在离线/网络关闭时工作,所以我不能依赖网络连接来访问数据。这就是为什么每台机器都需要安装一个独立/1 节点副本集的原因。问题是它会起作用还是这些配置有问题?
  • 它会起作用的。无论如何,它都不是越野车。但是,由于 MongoDB 最初旨在安装在服务器硬件上,您可能需要调整默认设置以更好地适应您的用例。
  • 1节点副本集的好处是使用事务
猜你喜欢
  • 2016-05-22
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 2017-03-30
  • 1970-01-01
  • 2021-03-08
  • 2017-04-11
  • 2018-04-04
相关资源
最近更新 更多