MongoDB Replication
MongoDB中的复制集是一组维护相同数据集的mongod进程。复制集提供了冗余和高可用性,并且是所有生产部署的基础。本节介绍了MongoDB中的复制以及复制集的组件和架构。该部分还提供了与复制集相关的常见任务的教程。
冗余和数据可用性 复制提供了冗余并增加了数据可用性。通过在不同的数据库服务器上拥有数据的多个副本,复制提供了一定程度的容错性,防止单个数据库服务器的丢失。 在某些情况下,复制可以提供增加的读取容量,因为客户端可以将读取操作发送到不同的服务器。在不同的数据中心维护数据的副本可以增加分布式应用程序的数据局部性和可用性。您还可以为专用目的维护额外的副本,例如灾难恢复、报告或备份。
MongoDB中的复制 复制集是一组维护相同数据集的mongod实例。一个复制集包含多个数据承载节点和可选的一个仲裁节点。在数据承载节点中,一个并且只有一个成员被认为是主节点,而其他节点被认为是次要节点。 主节点接收所有写操作。一个复制集只能有一个主节点,能够使用 { w: “majority” } 写关注确认写操作;尽管在某些情况下,另一个mongod实例可能短暂地认为自己也是主节点。主节点记录其数据集的所有更改在其操作日志中,即oplog。 次要节点复制主节点的oplog,并将操作应用于其数据集,以使次要节点的数据集反映主节点的数据集。如果主节点不可用,有资格的次要节点将进行选举,选举自己为新的主节点。 在某些情况下(例如您有一个主节点和一个次要节点,但成本限制禁止添加另一个次要节点),您可以选择将mongod实例添加到复制集作为仲裁者。仲裁者参与选举,但不保存数据(即不提供数据冗余)。 仲裁者将始终是仲裁者,而主节点可能会下台成为次要节点,次要节点可能会在选举期间成为主节点。 异步复制 次要节点异步复制主节点的oplog,并将操作应用于其数据集。通过使次要节点的数据集反映主节点的数据集,即使一个或多个成员失败,复制集也可以继续正常运行。