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