Redis和MongoDB的复制、持久化、集群和集群管理功能

Redis的复制功能

Redis的持久化功能

Redis的Sentinel(管理多个Redis服务器,监控、提醒和自动故障迁移)

Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移, 以及选择哪个从服务器作为新的主服务器。

Redis集群教程

Redis集群规范


MongoDB的复制功能(摘自《MongoDB实战》)

主从复制和副本集。两种方式都是在一个主节点进行写操作(写入的数据被异步同步到所有的从节点上),并从从节点上读取数据。使用相同的复制机制,但是副本集还能保证自动故障转移等其他更高级的功能,因此生产上推荐使用副本集。

为什么复制很重要?以下是一些数据库故障

1、应用程序与数据库之间的网络连接丢失

2、计划停机,但服务器没有按照预定的计划重新上线。

3、断电。

4、数据库服务器硬盘故障。

功能:

1、复制主要用来做冗余(不是备份的替代)。

2、故障转移。

3、能在副本间均衡读负载。

主从复制:

副本集:最小的副本集由三个节点组成,两个一等的、持久化mongod实例,两者都能作为副本集的主节点,都有完整的数据副本。一个仲裁节点,不复制数据,只是中立观察者,在要求故障转移时帮助选出新的主节点。

副本集依赖于两个基础机制:oplog和“心跳”(heartbeat)。oplog让数据的复制成为可能,而“心跳”则监控健康状况并触发故障转移。

关于oplog

oplog是一个固定集合,位于每个复制节点的local数据库里,记录了所有对数据的变更。每次客户端向主节点写入数据,就会自动向主节点的oplog里添加一个条目,其中包含了足够的信息来再现数据。一旦写操作被复制到某个从节点上,从节点也会保存一条关于写入的记录。每个oplog条目都由一个BSON时间戳进行标识,所有从节点都使用这个时间戳来追踪它们最后应用的条目。从节点也有自己的一份oplog,假设向副本集的主节点发起写操作,接下来写操作先被记录下来,添加到主节点的oplog里。与此同时,所有从节点复制oplog。因此,当某个从节点准备更新自己时,他做了三件事:首先,查看自己的oplog里最后一条的时间戳;其次,查询主节点oplog里所有大于此时间戳的条目,最后,把那些条目添加到自己的oplog里并应用到自己的库里。也就是说,万一发生故障,任何被提升为主节点的从节点都会有一个oplog,其他从节点能以它为复制源进行复制。从节点使用长轮询(long polling)立即应用来自主节点oplog的新条目。

你可能感兴趣的:(数据库)