主机宕机
- 设置端口6379是主机,端口6380是从机,全部都正常启动
- 验证在6379写入数据,在6380也能得到数据
- 现在将6379主机停掉,模拟主机宕机
- 由于主机宕机了,现在就要将6380从机设置为主机,使用slaveof no one命令,此时原来的从机变为主机也有了写的权限
- 要是原来6379经过修复后,能够正常工作,先将6380主机数据进行保存持久化,将rdb文件,覆盖原主机6379的rdb文件,进行数据的统一。
- 启动原来的主机6379
- 将6380再次设置为从机
- 先验证主机和从机数据是否一致
- 在主机设置值,看能否同步到从机。
- 测试从机是否还有写权限,作为从机之后,不再具有写权限了。
从机宕机
这个相对而言比较简单,在Redis中从库重新启动后会自动加入到主从架构中,自动完成同步数据;
总结
如果在主从复制架构中出现宕机的情况,需要分情况看:
- 从Redis宕机
- 这个相对而言比较简单,在Redis中从库重新启动后会自动加入到主从架构中,自动完成同步数据;
- 问题? 如果从库在断开期间,主库的变化不大,从库再次启动后,主库依然会将所有的数据做RDB操作吗?还是增量更新?在Redis2.8版本后就实现了,主从断线后恢复的情况下实现增量复制。
- 主Redis宕机,这个相对而言就会复杂一些,需要以下2步才能完成
- 第一步,在从数据库中执行SLAVEOFNO ONE命令,断开主从关系并且提升为主库继续服务;
- 第二步,将主库重新启动后,执行SLAVEOF命令,将其设置为其他库的从库,这时数据就能更新回来;
- 这个手动完成恢复的过程其实是比较麻烦的并且容易出错,有没有好办法解决呢?当前有的,Redis提供的哨兵(sentinel)的功能。