6.1复制集概述
- 复制集Replica Sets与分片集群sharding是MongoDB最具有特色的功能:
- 复制集实现了数据库的冗余备份、故障转移,这是数据库管理人员最求的目标;
- 分片实现了数据的分布式存储、负载均衡,这是海量数据云存储平台不可或缺的功能。
-
数据库总是会遇到各种失败的场景,如网络连接断开、断电等,尽管journaling日志功能也提供了数据恢复的功能,但journaling通常是针对单个节点来说的,只能保证单节点数据的一致性;
-
复制集通常是由多个节点组成,每个节点除了journaling日志恢复功能外,整个复制集还具有故障自动转移的功能,这样能保证数据库的高可用性。
-
在生产环境中一个复制集最少应该包含三个节点,其中有一个必须是主节点,典型的部署结构如下图:
-
每个节点都是一个mongod进程对应的实例,节点之间互相周期性的通过心跳检查对方的状态,默认情况下primary节点负责数据的读、写,second节点备份primary节点上的数据,但是arbiter节点不会从primary节点同步数据;
-
从它的名字arbiter可以看出,它起到的作用只是当primary节点故障时,能够参与到复制集剩下的节点中**,选择出一个新**的primary节点,它自己永远不会变为primary节点,也不会参与数据的读写。也就是说,数据库的数据会存在primary和second节点中,second节点相当于一个备份,当然second节点可以有多个,当primary节点故障时,second节点有可能变为primary节点。故障转移流程如图所示。