Redis之主从复制
主从复制:可以通过slaveof命令和配置来实现。slaveof 进行复制, slaveof no one取消主从;配置:slaveof ip port slave-read-only yes
全量复制:将master数据全部复制到slave:psync ? -1 runId offset 其开销大,主节点bgsave需要时间,RDB文件网络传输时间,从节点情况数据时间,从节点加载RDB时间,AOF重写可能消耗时间。
部分复制:从节点发送 pysny offset runid,
故障自动转移原理
slave宕机:客户端取正常运行的节点。
master宕机:找可用节点执行命令:yige节点执行: slaveof no one 和另一个执行: slaveof new master
常见问题:
1、读写分离 可能遇到复制数据延迟,可监控偏移量,读到过期数据,从节点故障:
2、主从配置不一致(maxmemory)丢失数据;
3、①规避全量复制:第一次不可避免,小主节点、低峰;②节点运行ID变化(从节点重启)导致,哨兵和集群可以解决;③复制积压缓冲区不足:网络中断,部分复制无法满足,增大复制缓冲区配置 rel_backlog_size,根据网络增强。
复制风暴
单节点复制风暴:master宕机重启所有从节点进行复制,更换复制拓扑解决 (存在问题)
单机器复制风暴:主节点分散,尽量用集群。
sentinel自动故障转移