mongodb数据冗余及高可用性浅谈
mongodb
1、概述
- MongoDB 有两种数据冗余方式,一种是 Master-Slave 模式(主从复制),一种是 Replica Sets 模式(副本集)。从而保证数据的安全性和服务的高可用性。
- 区别:
Replica Sets比传统的Master-Slave主从复制最重要的改进的地方就是它可以进行故障的自动转移,如果我们停掉复制集中的一个成员,那么剩余成员会再自动选举一个成员,作为主库。
- Tips:MongoDB 3.2 deprecates the use of master-slave replication for components of sharded clusters.
2、Master-Slave
2.1、简介
- 主从复制是MongoDB最常用的复制方式,也是一个简单的数据库同步备份的集群技术,这种方式很灵活.可用于备份,故障恢复,读扩展等。最基本的设置方式就是建立一个主节点和一个或多个从节点,每个从节点要知道主节点的地址。采用双机备份后主节点挂掉了后从节点可以接替主机继续服务。这种模式比单节点的更具高可用性。
- 缺点
- 该模式需要手工指定集群中的 Master。如果 Master 发生故障,一般都是人工介入,指定新的 Master。且过程对于应用一般不是透明的,往往伴随着应用重新修改配置文件,重启应用服务器等。
- Tips:
- 1、该模式需要手工指定master,且当master故障时,不会自动进行故障转移。
- 2、在该模式中,master的操作回记录到oplog(operation log)中,oplog存储在系统数据库local的集合oplog.$main中,这个集合的每个文档都代表主节点上执行的一个操作。从服务器会定期从主服务器中获取oplog记录然后执行备份,因为oplog在固定的collection中,所以旧的记录会被新的覆盖。
- 3、默认只能在master上读写,slave上默认不能读写,但可以通过使用rs.slaveOk()来读写分离,让slave承担读的任务,但会数据不一定是最新的。
3、Replica Sets
3.1、简介
- Replica Set 使用的是 n 个 mongod 节点,构建具备自动的容错功能(auto-failover),自动恢复的(auto-recovery)的高可用方案。使用 Replica Set 来实现读写分离。通过在连接时指定或者在主库指定 slaveOk,由Secondary 来分担读的压力,Primary 只承担写操作。对于 Replica Set 中的 secondary 节点默认是不可读的。
- 集群中的各节点还会通过传递心跳信息来检测各自的健康状况,心跳信息默认每 2 秒传递一次。当主节点故障时,多个从节点会触发一次新的选举操作,并选举其中的一个成为新的主节点。
4、配置
5、参考文献