Redis主从自动切换原理
复制原理
1:当一个从数据库启动时,会向主数据库发送sync命令, 2:主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来 3:当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库。 4:从数据库收到后,会载入快照文件并执行收到的缓存的命令。
redis是通过RDB持久化文件和redis缓存命令来时间主从复制。一般在建立主从关系时,一次同步会进行复制初始化。 以上过程为复制初始化,复制初始化结束后,主数据库每当受到写命令时,就会将命令同步给从数据库,保证主从数据一致性。
哨兵
哨兵的作用就是监视redis节点的运行状态。 1.监控主数据库和从数据库是否能够正常运行 2.主数据库出现故障时自动将从数据库转换为主数据库。 如果没有哨兵,当主节点挂了后整个就挂了,只能去手动重新启动 监控: Sentinel会不断的检查主服务器和从服务器是否正常运行。 自动故障转移: 当超过down-after-millisecond时间后,如果节点未回复,则哨兵认为主观下线。 主观下线表示当前哨兵认为该节点已经下面 这时候就要询问其他哨兵节点是否认为该主节点是主观下线,当达到指定数量时,哨兵就会认为是客观下线 当主节点客观下线时就需要进行主从切换,主从切换的步骤为: 配置提供者: 在Redis Sentinel模式下,客户端应用在初始化时连接的是Sentinel节点集合,从中获取主节点的信息。
集群结构
IP地址
主机名称
角色
192.168.1.11:6379
redis-master
主节点
192.168.1.12:6379
redis-slave1
从节点
192.168.1.13:6379
redis-slave2
从节点
192.168.1.11:26379
redis-master
sentinel1
192.168.1.12:26379
redis-slave1
sentinel2
192.168.1.13:26379
redis-slave2
sentinel3
slave配置(1.12和1.13一样)
replicaof 192.168.56.11 6379 # 配置为master的从 masterauth 123456 # 配置主的密码
sentinel配置
Redis主的别名, IP, 端口,
这里的2指的是需要至少2个Sentinel认为主Redis挂了才最终会采取下一步行为
sentinel monitor redis-master 192.168.1.11:6379 6379 2
如果mymaster 30秒内没有响应,则认为其主观失效,单位毫秒
sentinel down-after-milliseconds redis-master 30000
如果master重新选出来后,其它slave节点能同时并行从新master同步数据的台数有多少个
sentinel parallel-syncs redis-master 1
该参数指定一个时间段,在该时间段内没有实现故障转移成功,则会再一次发起故障转移的操作,单位毫秒
sentinel failover-timeout redis-master 180000、
不允许使用sentinel SET设置notification-script和client-reconfig-script。默认no
sentinel deny-scripts-reconfig yes