【问题标题】:MongoDB standalone vs replica set and how to migrate data from a standalone to a replica setMongoDB 独立与副本集以及如何将数据从独立集迁移到副本集
【发布时间】:2024-01-16 10:09:01
【问题描述】:

我有几个关于 MongoDB 独立集和副本集的问题,我不太明白。

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

我之所以问所有这些问题,是因为最近我试图实现事务和会话只能在“副本集”上开始,我根本没有真正得到区别。

【问题讨论】:

  • MongoDB 资源回答了您的大部分问题,甚至包括概念上的优缺点和明确的转换指南。阅读愉快:docs.mongodb.com/manual/tutorial/…
  • 感谢@Björn,这有助于我进行转换(并且可能会迁移),但我在此页面上找不到任何从概念上解释 1 个独立实例和 1 个副本集连接之间的区别的地方?跨度>

标签: mongodb replication mongodb-replica-set


【解决方案1】:
  • 我应该什么时候使用它们中的任何一个?

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

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

充分利用复制的基本实现指定您 应该至少有一个主节点和两个辅助节点。所以 示例始终具有 3 个节点。不仅如此,如果从 3 主节点出现故障,您仍然有 2 个节点(mongoDB 将分配 使用仲裁规则)和一个主要和一个辅助以实现高可用性

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

单实例与 mongo 复制是没有意义的。

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

Convert a Standalone to a Replica Set 。当您的现有数据从独立转换为复制集时,一旦它们启动并运行,您的现有数据将被迁移到所有复制实例。

【讨论】: