MongoDB单机版和复制集的区别以及如何将数据从单机版迁移到复制集

4

我有几个问题关于 MongoDB 独立服务器和副本集,我不是很明白。

  • 何时应该使用它们?
  • 为什么所有的副本集教程都显示 3 个连接?这有原因吗?
  • 我可以为仅有一个实例创建一个副本集吗?在这种情况下,它与独立的 MongoDB 实例有何不同?
  • 如何从独立的实例迁移数据到副本集?

我问这些问题是因为最近我试图实现事务,但会话只能在“副本集”上启动,但我真的不明白两者之间的区别。


1
MongoDB资源可以回答你大部分的问题,包括概念上的优缺点和明确的转换指南。阅读愉快:https://docs.mongodb.com/manual/tutorial/convert-standalone-to-replica-set/ - Björn
谢谢@Björn,这对我进行转换(可能还包括迁移)有所帮助,但我在这个页面上找不到任何解释一个独立实例和一个副本集连接之间概念上的区别的地方。 - Ali Elkhateeb
1个回答

4
  • 何时应该使用它们之一?

复制是将数据同步到多个服务器的过程。复制提供冗余并增加了不同数据库服务器上数据的可用性。复制保护数据库免受单个服务器的损失。复制还允许您从硬件故障和服务中断中恢复。有了额外的数据副本,您可以将其中一个用于灾难恢复、报告或备份。

  • 为了保护您的数据安全
  • 高(24*7)数据可用性
  • 灾难恢复
  • 没有维护停机时间(如备份、索引重建、压缩),读取扩展(额外的副本供阅读)
  • 副本集对应用程序是透明的
  • 为什么所有副本集教程都显示3个连接,有原因吗?

利用复制完全的实现至少需要一个主节点和两个从节点。因此,示例始终包含3个节点。此外,如果从3个节点中,主节点崩溃,仍然有2个节点(mongoDB将使用仲裁者规则),一个主节点和一个辅助节点以提供高可用性。

  • 我可以仅为1个实例创建副本集吗?在这种情况下,它与独立的mongodb实例有何不同?

使用mongo复制来处理单个实例没有意义。

  • 如何将数据从独立实例迁移到副本集?

将单机转换为副本集。一旦从单机转换为副本集并开始运行,现有数据将迁移到所有副本实例中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接