Mongodb Mongo DB-独立数据库和;单节点副本集

Mongodb Mongo DB-独立数据库和;单节点副本集,mongodb,replicaset,mongodb-replica-set,Mongodb,Replicaset,Mongodb Replica Set,我需要使用Mongo DB事务,最近我了解到事务不适用于Mongo独立模式,而只适用于副本集 ()。 此外,我还了解到,独立模式不建议用于生产 因此,我发现只需在mongod.cfg中定义一个副本集名称就足以将Mongo DB作为副本集而不是独立运行。 更改后,Mongo事务开始工作。 然而,使用它作为副本集感觉有点奇怪,尽管我并没有真正使用复制功能,我想确保我使用的是有效的配置 因此,我的问题是: 假设我真的不需要复制、负载平衡或任何其他可扩展功能,那么将Mongo作为单节点副本集运行是否存在

我需要使用Mongo DB事务,最近我了解到事务不适用于Mongo独立模式,而只适用于副本集 ()。
此外,我还了解到,独立模式不建议用于生产

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

因此,我的问题是:

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

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

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

    作为独立运行与作为单节点副本集运行之间的功能和性能差异(如果有)是什么

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

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

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

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

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

    我认为kevinadi回答得很好,但我仍然想添加它

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

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

    如果要将独立数据库转换为复制集,请按照“将独立数据库转换为副本集”


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

    我获得了可伸缩性和高可用性的好处,但是如果我只需要一个文档数据库而不是关系数据库呢?我的设想是,每台机器都需要一个本地数据库,因为它必须在脱机/网络关闭时工作,所以我不能依靠网络连接来访问数据。这就是为什么每台机器上都需要安装一个独立的/1节点副本集。问题是它会工作还是这些配置有问题?它会工作的。这根本不是马车。但是,由于MongoDB最初打算安装在服务器硬件上,您可能需要调整默认设置以更好地适应您的用例。单节点副本集的好处是使用事务。因为我们需要事务,在这种情况下,单节点副本集不会有问题,只需要额外的oplog,不是吗?谢谢你的提问。我也有同样的问题,你的问题和答案帮助了我