MongoDB 复制集节点类型有哪些?

参考回答

在 MongoDB 的复制集中,不同的节点类型承担着不同的角色,以实现数据高可用性、冗余和一致性。复制集节点主要分为以下类型:

  1. 主节点(Primary)
  2. 从节点(Secondary)
  3. 仲裁节点(Arbiter)
  4. 隐藏节点(Hidden Node)
  5. 延迟节点(Delayed Node)
  6. 优先级 0 的节点

详细讲解与拓展

1. 主节点(Primary)

  • 功能
    • 负责处理所有的写操作。
    • 写操作会记录到 Oplog(操作日志),从节点根据 Oplog 同步数据。
  • 唯一性
    • 每个复制集中只能有一个主节点。
  • 自动切换
    • 如果主节点不可用,从节点会通过选举机制选择新的主节点。

2. 从节点(Secondary)

  • 功能
    • 从主节点同步数据,通过读取 Oplog 保持与主节点数据一致。
    • 默认仅支持只读操作。
  • 读操作
    • 可以通过设置读取优先级,允许从节点提供读操作以减轻主节点压力。
      db.getMongo().setReadPref("secondaryPreferred")
      
      JavaScript
  • 数量要求
    • 复制集中应至少有一个从节点。

3. 仲裁节点(Arbiter)

  • 功能
    • 不存储数据,只参与选举。
    • 主要用于保持副本集投票机制中的奇数节点规则。
  • 应用场景
    • 在资源受限或副本集节点数为偶数时添加仲裁节点。
  • 注意事项
    • 仲裁节点不能用作数据读写节点。
      rs.addArb("192.168.1.3:27017")
      
      JavaScript

4. 隐藏节点(Hidden Node)

  • 功能
    • 从主节点同步数据,但对客户端隐藏,不能直接提供读操作。
    • 通常用于备份、报表生成或特定用途的数据处理。
  • 配置方法
    • 设置 hidden: true 来定义隐藏节点。
      cfg.members[2].hidden = true
      rs.reconfig(cfg)
      
      JavaScript

5. 延迟节点(Delayed Node)

  • 功能
    • 从主节点同步数据,但延迟一定时间,保留历史数据快照。
    • 适用于数据回滚或灾难恢复场景。
  • 配置方法
    • 设置 secondaryDelaySecs 定义同步延迟时间。
      cfg.members[3].secondaryDelaySecs = 3600
      rs.reconfig(cfg)
      
      JavaScript

6. 优先级 0 的节点

  • 功能
    • 从主节点同步数据,但不会参与主节点选举。
    • 适用于需要稳定为从节点的场景,如备份节点。
  • 配置方法
    • 设置 priority: 0
      cfg.members[4].priority = 0
      rs.reconfig(cfg)
      
      JavaScript

节点类型对比

节点类型 数据存储 写操作 读操作 选举权限 应用场景
主节点 默认是 处理所有写操作
从节点 可选 数据复制与负载均衡
仲裁节点 保持奇数节点,参与选举
隐藏节点 备份、报表生成
延迟节点 可选 数据回滚、灾难恢复
优先级 0 节点 可选 备份或特定用途的从节点

示例:三节点复制集配置

假设我们有以下需求:
– 一个主节点(Primary)。
– 一个普通从节点(Secondary)。
– 一个仲裁节点(Arbiter)。

配置方法

rs.initiate({
    _id: "myReplicaSet",
    members: [
        { _id: 0, host: "192.168.1.1:27017", priority: 1 }, // 主节点
        { _id: 1, host: "192.168.1.2:27017", priority: 1 }, // 从节点
        { _id: 2, host: "192.168.1.3:27017", arbiterOnly: true } // 仲裁节点
    ]
})
JavaScript

总结

MongoDB 的复制集支持多种节点类型,每种类型都有特定的角色和功能:
主节点 负责写操作和数据同步。
从节点 提供数据复制和读操作负载均衡。
仲裁节点 保持选举机制的奇数规则。
隐藏节点、延迟节点和优先级 0 节点 用于特定场景(如备份、历史数据保留等)。

通过合理配置和组合节点类型,可以满足不同的业务需求,同时提升 MongoDB 副本集的高可用性和可靠性。

发表评论

后才能评论