处理系统故障
如果将Redis作为应用程序的唯一数据存储,那么就必须确保Redis不丢失任何数据,跟提供了ACID保证的传统关系数据库不同,在使用Redis为后端构建应用程序时,用户需要多做一些工作才能保证数据一致性。
ACID是指原子性(atomicity)、一致性(consistency)、隔离性(isolation)、耐久性(durability)
验证快照文件和AOF文件
Redis提供了两个命令行程序用于检查AOF文件和快照文件的状态
-
redis-check-aof
-
redis-check-dump
如果再redis-check-aof
程序时给定了–fix 参数,那么程序将对AOF文件进行修复。其修复过程:会扫描给定的AOF文件,寻找不正确或者不完整的命令,当找到第一个出错命令的时候,程序会删除当前出错命令及之后的命令,保留出错前的正确命令。
对于快照文件,只能将快照文件保留多个备份,并在进行数据恢复时,通过计算快照文件的SHA1散列值和SHA256散列值进行内容验证。
更换故障主服务器
-
A为主服务器,B为从服务器,当A发生故障时而断开了网络连接,可以给B发生一个SAVE命令,将快照文件发送给C新主服务器,然后将B作为C的从服务器(因为B原本就是从服务器,我们的客户端不能对它进行写入,并且在机器B执行快照操作后,我们客户端也不会与其他视图对B写入的客户端生成竞争条件)。
-
可以将B从服务器升级为主服务器,然后创建从服务器。
这两种方法都能让Redis回到之前的一个主服务器和一个从服务器状态。
Redis Sentinel 可以监控指定的Redis主服务器及其属下的从服务器,并能自动进行故障转移。
主服务器及其属下的从服务器,并能自动进行故障转移。