mongodb副本集

MongoDB中的复制是将数据同步在多个服务器的过程。

复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性,并可以保证数据的安全性。

复制还允许您从硬件故障和服务中断中恢复数据。


MongoDB中的复制原理

mongodb的的的复制至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。

MongoDB中的各个节点常见的搭配方式为:一主一从,一主多从。

主节点记录在其上的所有操作OPLOG,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行

这些操作,从而保证从节点的数据与主节点一致。

MongoDB中的复制结构图如下所示:

mongodb副本集

以上结构图总,客户端总主节点读取数据,在客户端写入数据到主节点是,主节点与从节点进行数据交互保障数据的一致性。


MongoDB的副本集可用分两种:

主从主从复制

实现数据同步只需要在某一台服务器启动时加上“-master”参数,以指明此服务器的角色是主;另一台服务器加上“-slave”和“-source”参数,以指明此服务器的角色是从机。

主从复制的优点如下:

  • 从服务器可以执行查询工作,降低主服务器访问压力。
  • 在从服务器执行备份,避免备份期间锁定主服务器的数据。
  • 当主服务器出现故障时,可以快速切换到从服务器,减少当机时间。

注意: MongoDB的最新版本(3.6版本)已不再推荐此方案。主从复制虽然可以承受一定的负载压力,但这种方式仍然是一个单点,如果主库挂了,数据写入就成了风险。

副本集复制集

MongoDB在1.6版本对开发了新功能副本集,这比之前的复制功能要强大一些,增加了故障自动切换和自动修复成员节点,各个DB之间的数据完全一致,大大降低了维护成功.auto shard已经明确说明不支持replication paris,建议使用replica set,replica set故障切换完全自动。

Replica Sets的结构类似一个集群,完全可以把它当成一个集群,因为它确实与集群实现的作用是一样的:如果其中一个节点出现故障,其他节点马上会将业务接管过来而无须停机操作。