Redis 主从复制原理

主从架构

单机单个节点,redis并发支持上万,但是随着业务的复杂度,redis的并发度还是会有上限的。因此还是需要在架构上进行优化。 主从架构是一种水平横向拓展的架构,读写分离。 主节点负责数据的写入,从节点负责读操作。 redis主从架构

主从原理

当主节点和从节点启动后,在从节点会有一些相关的配置,启动后,从节点会对主节点发出ping请求,这时主节点会将全量数据复制给从节点,也就是复制RDB。 主节点会将内存里面的数据备份一个RDB文件,然后将RDB文件复制给从节点,从节点拿到主节点传过来的RDB文件后,将RDB文件的内容加载到从节点的内存当中。这是一个初始化的过程,当以后主节点有数据写入时,主节点会把命令发送给从节点,从节点将数据写入到内存。 redis主从原理 当从节点下线一段时间后,再次恢复时,主节点会把下线这段时间的增量数据,一起同步给从节点。 如果要使用主从的话,主节点必须开启持久化,如果主节点没有开启持久化,当主节点宕机后,再次上线之后,主节点会将从节点的数据清空

主从模式

redis主从模式,一般都是一主2从,从节点不会太多,因为主从复制其实就是文件的上传和下载,如果从节点太多,主从复制的时候会占用很大一部分内网的带宽。 如果需要多个从节点,可以在从节点上继续配置主从模式,也就是从节点下还有从节点。 redis主从模式

主从实践

在redis客户端,使用:info replication 命令,查看当前redis节点的主从配置信息。

在redis.conf配置文件搜索 REPLICATION 找到配置主从的位置。配置主从时,只需要配置从节点即可,无需配置主节点。

配置从节点

# 配置主节点的ip和端口
replicaof <masterip> <masterport>

# 配置主节点的登录密码(主节点没有配置密码,不需要配置该选项)
masterauth <master-password>

# 配置,只要是从节点,都开启,表示从节点只读,不进行写操作
replica-read-only yes

无磁盘化复制

redis主从复制,默认是从节点将主节点保存在磁盘的rdb文件复制到从节点的磁盘,然后在将rdb文件恢复到内存。 无磁盘化复制,是将主节点的数据从主节点的内存中直接读取并写入从节点的内存,这样的传输方式,是使用socket的方式进行传输。 redis无磁盘化复制

# 数据同步策略:无磁盘化复制,yes 开启,no 关闭
# 目前数据测试阶段,生产环境不建议使用 
repl-diskless-sync no

redis数据同步策略有两种,一种是磁盘同步,也是默认的同步方式,redis新建一个进程,将数据写入rdb文件,这些rdb文件会定期向slave节点的磁盘同步。另一种数据同步的策略就是无磁盘化同步,master会创建一个新的进程,这个进程会向socket写入rdb文件,不向磁盘写入。如果服务器网络吞吐量比较大,可以使用第二种方式,提高效率。

master节点可以配置一个时间,定期的向socket写入rdb文件。

# 无磁盘化同步间隔时间,单位(秒)
repl-diskless-sync-delay 5