redis:三种集群 主从 哨兵sentinel 集群Cluster
redis:主从复制原理来源地址:
一.进行主备切换可能发生的问题
(1)异步复制导致的数据丢失
产生原因:在主从复制的过程当中,部分数据没有发送的slave,master就宕机,slave数据少于主节点
解决方案:
redis从2.8版本开始使用PSYNC命令代替SYNC命令来执行复制时的同步操作。PSYNC命令可分为全量同步(full resynchronization)和增量同步(partial resynchronization)
redis自带俩种复制方式保证 主节点和从节点数据一致性
全量同步:用于初次复制的情况,slave发送PSYNC命令到master,master创建并发送RDB文件及缓冲区里的写命令给slave。
增量同步:用于网络中断等情况后的复制,只将中断期间master执行的写命令发送给从节点,与全量同步相比更加高效。需要注意的是,如果网络中断时间过长,导致master没有能够完整地保存中断期间执行的写命令,则无法进行增量同步,仍需要全量同步
(2)脑裂导致的数据丢失
脑裂导致数据丢失详细解决方案链接
产生原因:某个master节点脱离正常的网络环境,哨兵误以为master节点宕机,重新选举slave为master,此时集群中会产生2个master,此时client还未切换到新的master节点,还会继续往老的master节点写数据,新写入的数据同步不上新master节点导致数据丢失
二.解决方案:
min-slaves-to-write 1
min-slaves-max-lag 10
min-slaves-to-write 表示要求至少有1个slave,
min-slaves-max-lag 表示数据复制和同步的延迟不能超过10秒(即slave超过10秒未给master ack消息,将采取措施)