面试题-Redis宕机怎么办

持久化

使用Redis的持久化机制,来保证Redis的数据不会因为故障而丢失。Redis的持久化机制有两种,第一种是RDB快照,第二种是AOF日志。快照是一次全量备份,AOF日志是连续的增量备份。

 

RDB是一个快照文件,数据很紧凑,适合用于灾难恢复,而且恢复大数据集时的速度比 AOF 的恢复速度要快。

保存整个数据集的快照,也不可能太频繁。因此服务器故障时候会丢失数据。

 

AOF 的默认策略为每秒钟 fsync 一次,在这种配置下,Redis 仍然可以保持良好的性能。

AOF 文件的体积通常要大于 RDB 文件的体积。恢复速度慢。

 

集群方式

redis集群:两台为一组,一台主机一台备机 ,平时主机工作,备机不工作 ,备机每隔几秒就会给主机发送一个ping ,主机在正常工作的时候会发送一个peng 给备机 ,如果不返回pang,可能会连续ping三次,都不返回那么备机就会上,备机里有主机的全部内容,这个叫做心跳检测机制(高可用的作用),主从热备
 

slave宕机
配置主从复制的时候才配置从的redis,从的会从主的redis中读取主的redis的操作日志,求达到主从复制。
1)在Redis中从库重新启动后会自动加入到主从架构中,自动完成同步数据;
2)如果从数据库实现了持久化,可以直接连接到主的上面,只要实现增量备份(宕机到重新连接过程中,主的数据库发生数据操作,复制到从数据库),重新连接到主从架构中会实现增量同步。


Master 宕机
假如主从都没数据持久化,此时千万不要立马重启服务,否则可能会造成数据丢失,正确的操作如下:
在slave数据上执行SLAVEOF ON ONE,来断开主从关系并把slave升级为主库
此时重新启动主数据库,执行SLAVEOF,把它设置为从库,连接到主的redis上面做主从复制,自动备份数据。
以上过程很容易配置错误,可以使用redis提供的哨兵机制来简化上面的操作。简单的方法:redis的哨兵(sentinel)的功能。

你可能感兴趣的:(Redis)