MongoDB的副本集,相对单节点的MongoDB,提供了可用性、安全性、读写性能提升、实现事务等几大特性。
- 可用性
启用副本集,通常最少需要三个成员节点,最多可支持50个成员节点,其中最多可设置7个拥有主节点选举权的成员节点,运行时有且只有一个节点为主节点,当主节点(primary)不可用时,副本集根据预设的权值(priority)选出新的主节点。这种机制使得副本集,相对单节点应用,具有更高可用性。 - 安全性
oplog(操作日志)是一个主节点存储写操作的集合(collection),所有从节点(secondary)拥有一个oplog的副本。
副本集由主节点接收写操作指令,当主节点按照写操作指令写入数据后,会将该次操作记录到oplog,然后从节点将该次操作复制到自己的oplog副本中。副本集以此保证所有节点数据的一致性。同时也保证了数据的安全性,不会因为单个节点的问题造成数据的丢失。 - 读写性能提升
默认配置下,副本集读写数据均由主节点处理。实操中,可以通过更改配置,将读操作任务分配到从节点,从而分散主节点压力,进而提升整个副本集读写性能。 - 实现事务
从4.0版本开始,MongoDB开始支持副本集下的事务,也就是说,副本集是MongoDB实现事务的前提之一(4.2版本后,MongoDB开始支持分片下的事务)。