106. MongoDB 如何实现高可用?
和 MySQL 一样,MongoDB 也提供了其复制方案,为实现高可用提供了基础。目前,MongoDB 支持两种复制模式:
- Master / Slave ,主从复制,角色包括 Master 和 Slave 。
- Replica Set ,复制集复制,角色包括 Primary 和 Secondary 以及 Arbiter 。
生产环境下,只会使用 Replica Set 复制级的方式,实现 MongoDB 的高可用。主要因为,它提供了良好的自动故障切换功能。具体的搭建方式,可以看看 《MongoDB 集群搭建及使用》 。
? 什么是 Primary?
Primary,它是当前备份集群(replica set)中负责处理所有写入操作的主要节点/成员。在一个复制集集群中,当失效备援(failover)事件发生时,Secondary 中的一个成员会变成新的 Primary。
? 什么是 Secondary?
Secondary ,从当前的 Primary上 复制相应的操作。它是通过跟踪复制oplog(local.oplog.rs)
做到的。
? MongoDB 如何实现读写分离?
在程序中,我们可以配置读取 Secondary 节点的数据,从而实现读写分离。例如说,每天晚上的 T+1 数据统计,可以读取 Secondary 节点的数据。具体可以参见 《Mongodb 的读写分离使用 Replica Sets 来实现》 文章。
? 什么是 MongoDB 的延迟节点?
参见文章 《Mongodb 延迟复制节点配置》 。
另外,MongoDB 的延迟节点,是不对外提供服务,所以在其上做全量备份,也是非常不错的选择。