一. 主从简介
配置多台 Redis 服务器,以主机和备机的身份分开。主机数据更新后,根据配置和策略,自动同步到备机的master/salver 机制,
Master 以写为主,Slave 以读为主,二者之间自动同步数据。
目的:
读写分离提高 Redis 性能;
避免单点故障,容灾快速恢复
原理:
每次从机联通后,都会给主机发送 sync 指令,主机立刻进行存盘操作,发送 RDB 文件,给从机
从机收到 RDB 文件后,进行全盘加载。之后每次主机的写操作,都会立刻发送给从机,从机执行相同的命令
二. 主从准备
除非是不同的主机配置不同的 Redis 服务,否则在一台机器上面跑多个 Redis 服务,需要配置多个 Redis 配置文件。
1. 准备多个 Redis 配置文件,每个配置文件,需要配置以下属性。
样本:
2. 根据多个配置文件,启动多个 Redis 服务。
原则是配从不配主。
3. 主从建立:
原则:配从不配主。
配置:在从服务器上执行 SLAVEOF ip:port 命令;
查看:执行 info replication 命令;
4. 永久建立:
在从机的配置文件中,编写 slaveof 属性配置!
5. 恢复身份:
执行命令 slaveof no noe 恢复自由身!
6. 主从常见问题:
1. 从机是从头开始复制主机的信息,还是只复制切入以后的信息?
答:从头开始复制,即完全复制。
2. 从机是否可以写?
答:不能
3. 主机 shutdown 后,从机是上位还是原地待命?
答:原地待命
4. 主机又回来了后,主机新增记录,从机还能否顺利复制?
答:可以
5. 从机宕机后,重启,宕机期间主机的新增记录,丛集是否会顺利复制?
答:可以
6. 其中一台从机 down 后重启,能否重认旧主?
答:不一定,看配置文件中是否配置了 slaveof
7. 如果两台从机都从主机同步数据,此时主机的 IO 压力会增大,如何解决?
答:按照主---从(主)---从模式配置!
三. 哨兵模式
1. 简介:
作用:
Master 状态检测
如果 Master 异常,则会进行 Master-Slave 切换,将其中一个 Slave 作为 Master,将之前的 Master 作为Slave。
下线:
主观下线:Subjectively Down,简称 SDOWN,指的是当前 Sentinel 实例对某个 redis 服务器做出的下线判断。
客观下线:Objectively Down, 简称 ODOWN,指的是多个 Sentinel 实例在对 Master Server 做出SDOWN 判断,
并且通过 SENTINEL is-master-down-by-addr 命令互相交流之后,得出的 Master Server 下线判断,然后开启 failover.
2. 工作原理:
1. 每个 Sentinel 以每秒钟一次的频率向它所知的 Master,Slave 以及其他 Sentinel 实例发送一个 PING 命令 ;
2. 如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值,
则这个实例会被 Sentinel 标记为主观下线;
3. 如果一个 Master 被标记为主观下线,则正在监视这个 Master 的所有 Sentinel 要以每秒一次的频率确认Master 的确进入了主观下线状态;
4. 当有足够数量的 Sentinel(大于等于配置文件指定的值)在指定的时间范围内确认 Master 的确进入了主观下线状态, 则 Master 会被标记为客观下线 ;
5. 在一般情况下, 每个 Sentinel 会以每 10 秒一次的频率向它已知的所有 Master,Slave 发送 INFO 命令
6. 当 Master 被 Sentinel 标记为客观下线时,Sentinel 向下线的 Master 的所有 Slave 发送 INFO 命令的频率会从 10 秒一次改为每秒一次 ;
7. 若没有足够数量的 Sentinel 同意 Master 已经下线, Master 的客观下线状态就会被移除;
若 Master 重新向 Sentinel 的 PING 命令返回有效回复, Master 的主观下线状态就会被移除;
3. 配置:
哨兵模式需要配置哨兵的配置文件sentinel.conf!
在sentinel.conf中写:
sentinel monitor mymaster 127.0.0.1 6379 1
启动哨兵:redis-sentinel sentinel.conf
4. 主机宕机后:
主表宕机后,哨兵开始选新主表,主表在恢复,变成从表。