0
点赞
收藏
分享

微信扫一扫

MongoDB6.0副本集

MongoDB 6.0副本集

简介

MongoDB是一种开源的NoSQL数据库管理系统,它以JSON格式存储数据,具有高性能、可扩展性和灵活性的特点。副本集是MongoDB中的一种数据复制机制,用于提供高可用性和数据容错性。

MongoDB副本集简介

副本集是由一组MongoDB实例组成的集群,其中包括一个主节点(Primary)和多个副本节点(Secondary)。主节点接收所有的写操作,并将这些操作复制到副本节点上。主节点和副本节点之间通过心跳机制进行通信,以确保数据的一致性和可用性。

每个副本集都有一个唯一的名称,可以使用以下方式创建一个副本集:

rs.initiate(
   {
      _id: "rs0",
      members: [
         { _id: 0, host : "mongodb1:27017" },
         { _id: 1, host : "mongodb2:27017" },
         { _id: 2, host : "mongodb3:27017" }
      ]
   }
)

在上面的代码示例中,我们创建了一个名为“rs0”的副本集,它包含了3个成员(其中主节点的_id为0)。

副本集的工作原理

当主节点接收到一个写操作时,它会将这个操作记录到操作日志(Oplog)中,并将这个操作广播给所有的副本节点。副本节点会从主节点同步操作日志,并应用这些操作到自己本地的数据集中。

如果主节点发生故障,副本节点会通过选举协议选举一个新的主节点。一般情况下,副本节点会选择最新的操作日志来作为新主节点的基础数据。

副本集的读操作

副本集中的读操作可以通过以下方式进行:

  • 主节点读取(默认):所有的读操作都发送到主节点,并从主节点读取数据。这种方式保证了数据的一致性,但可能会有性能瓶颈。
  • 副本节点读取:读操作可以发送到副本节点,并从副本节点读取数据。这种方式可以分担主节点的负载,但可能会读到过期的数据。
// 主节点读取
db.collection.find()

// 副本节点读取
db.collection.find().readPref('secondary')

副本集的故障恢复

当主节点发生故障时,副本节点会通过选举协议选举一个新的主节点。在选举过程中,副本节点会基于操作日志的先后顺序进行选择。

在副本节点成为新的主节点之前,副本集会进入“不可用”状态。当新的主节点选举成功后,副本集恢复正常。

总结

MongoDB副本集是提供高可用性和数据容错性的数据复制机制。它由一个主节点和多个副本节点组成,主节点负责接收写操作,副本节点负责复制数据。副本集可以通过选举协议来实现自动故障恢复,确保数据的一致性和可用性。同时,副本集还支持在副本节点上进行读操作,以分担主节点的负载。

erDiagram
    COLLECTION ||..|| DATABASE : 包含
    COLLECTION ||--|{ DOCUMENT : 包含
    DATABASE ||--|{ COLLECTION : 包含
classDiagram
    CLASS01 <|-- SUB-CLASS01 : 继承
    CLASS01 <|-- SUB-CLASS02 : 继承
举报

相关推荐

0 条评论