6.1复制集概述

  1. 复制集Replica Sets与分片集群sharding是MongoDB最具有特色的功能:
  • 复制集实现了数据库的冗余备份故障转移,这是数据库管理人员最求的目标;
  • 分片实现了数据的分布式存储负载均衡,这是海量数据云存储平台不可或缺的功能。
  1. 数据库总是会遇到各种失败的场景,如网络连接断开、断电等,尽管journaling日志功能也提供了数据恢复的功能,但journaling通常是针对单个节点来说的,只能保证单节点数据的一致性;

  2. 复制集通常是由多个节点组成,每个节点除了journaling日志恢复功能外,整个复制集还具有故障自动转移的功能,这样能保证数据库的高可用性

  3. 在生产环境中一个复制集最少应该包含三个节点,其中有一个必须是主节点,典型的部署结构如下图:

6.1-1

6.1-1

  1. 每个节点都是一个mongod进程对应的实例,节点之间互相周期性的通过心跳检查对方的状态,默认情况下primary节点负责数据的读、写,second节点备份primary节点上的数据,但是arbiter节点不会从primary节点同步数据;

  2. 从它的名字arbiter可以看出,它起到的作用只是当primary节点故障时,能够参与到复制集剩下的节点中**,选择出一个新**的primary节点,它自己永远不会变为primary节点,也不会参与数据的读写。也就是说,数据库的数据会存在primary和second节点中,second节点相当于一个备份,当然second节点可以有多个,当primary节点故障时,second节点有可能变为primary节点。故障转移流程如图所示。

6.1-2

6.1-2

  1. 更多复制集的概念和原理可参考如下链接:

    https://www.cnblogs.com/duanxz/p/10730096.html

    https://blog.csdn.net/qq_24598601/article/details/81150614

    https://docs.mongodb.com/manual/replication/