一、主从模式
1、需求
为了避免单点故障,通常的做法是将数据库复制多个副本部署在不同的服务器上。这样,即使有一台服务器出现了故障,其他服务器仍然可以继续提供服务。
为此,Redis提供了复制(replication)功能,可以实现当一台数据库中的数据更新后,自动将更新的数据同步到其他数据库上。
2、分工
在复制的概念中,数据库分为两类。一类是主数据库(master),一类是从数据库(slave)。 master可以进行读写操作,当写操作发生变化时,会自动将数据同步给slave。slave一般只提供读操作,并接收主数据库同步过来的数据。一个master可以对应多个slave。一个slave只能对应一个master。
引入主从复制的目的有两个:一是读写分离,分担master的压力。二是容灾备份。
3、原理
① slave启动成功之后,连接master,发送sync命令;
② master接收sync命令之后,开始执行BGSAVE命令生成RDB文件,并使用缓冲区记录此后执行的所有写命令。
③ master执行完BGSAVE后,向所有的slave发送快照文件。并在发送期间记录被执行的写命令。
④ slave接收到快照文件后载入收到的快照。
⑤ master快照发送完毕后,开始向slave发送缓冲区的写命令。
⑥ salve完成对快照文件的加载,开始接受命令请求。并执行主数据库缓冲区的写命令。(从数据库初始化完成。)
⑦ master每执行一个写命令就像slave发送相同的写命令。slave接受并执行写命令。(从数据库初始化完成后的操作)
⑧ 出现断开重连后,2.8之后的