Redis 主从复制

Redis主从复制过程,由从节点发起复制请求,默认情况从节点是只读的

1. 从节点发起复制请求,保存主节点信息

2. 主从建立socket连接

3. 从节点发送ping命令

4. 主节点权限验证(默认关闭)

5. 同步数据

6. 持续复制

其中同步数据又分为全量复制和部分复制

全量复制,从节点第一次复制必须为全量复制,全量复制过程为从节点发起,主节点保持RDB文件,主节点发送RDB文件,主节点把期间增量的命令缓存并且在RDB传输完成后发送增量命令给从节点,从节点如果开启了AOF则同步后会马上进行首次AOF。

可以看到全量复制是一个非常耗时和消耗网络带宽的操作,通常需要把从节点部署到同机房或同地,而且除第一次同步其他情况应该规避全量复制,还有主节点挂掉重启会修改serviceid也会触发从节点的全量复制,需要通过更好的集群方案解决。

部分复制,主从都保存偏移量,可以认为偏移量是缓冲区的指针,主节点根据偏移量传输增量数据,效率和速度远好于全量复制,默认缓冲区数据量1M,当偏移量不在缓冲区,则会触发全量复制,需要调整合理参数规避。

主从节点会通过心跳来保持连接。

要避免复制风暴,即多台从机器向同一台主机器发起复制,一个方法是采用树形结构(slave下面再有slave),另一个是主节点分散在多个机器上。

集群方案能更好解决主从高可用问题。

猜你喜欢

转载自ballenlee.iteye.com/blog/2409969