MongoDB高可用架构集群管理(一)

  MongoDB数据库核心的两个特点:第一个特点是副本集的自动切换,保证数据的高可靠、服务的高可用;第二个特点是自动分片、服务的横向扩展能力。

  (一)副本集架构

  MongoDB的副本集是一组保持相同数据集的mongod进程,副本集提供冗余和高可用性,这两个特性是所有生产部署的基础。

  1、复制:复制提供了冗余并增加了数据可用性;提供了一定的容错能力,以防数据库服务器的丢失;在某些场景下提高了读取容量;副本增加了分布式应用程序的数据本地化和可用性。

  2、副本集:

  • 副本集是一组保持相同数据集的mongod实例。
  • 副本集包含多个数据承载节点和一个可选的仲裁节点。
  • 在数据承载节点中只有一个成员是主节点,而其它的都是从节点。
    • 主节点接收所有的写入操作,也就是说一个副本集中只能有一个主节点响应应用的{w:"majority"}write concern。
    • 主节点会通过oplog记录所有在主节点让数据发生改变的操作。
    • 一个基本的3节点副本集架构如下图所示:

 

  Secondary节点会复制主节点的oplog日志信息,并在自己的节点上应用这些oplog,类似MySQL从库。如果主库出现无法访问的情况,则从库会发起投票,选举出一个新的Primary节点。

  • 副本集之间的复制模式和心跳检测如下图所示:

  

  复制过程是主库到从库之间的复制,心跳检测是从库之间的交互过程。

  •  仲裁节点Arbiter

  可以将一个mongod实例作为仲裁节点添加到副本集中,仲裁节点不维护数据集,它的目的是响应其它副本成员的心跳和选举请求。仲裁节点不需要太好的硬件资源,已在新版中不再推荐使用它了。

  主及节点、从节点和仲裁节点的简单示意图如下:

  在生产环境中不建议使用仲裁节点,仲裁节点永远是仲裁节点,主节点可能会降为从节点,从节点可以通过投票变为新的主节点。

posted @ 2020-02-27 21:27  晒太阳的兔子很忙  阅读(462)  评论(0编辑  收藏  举报