Redis默认使用异步复制,即低延迟和高性能,是绝大多数Redis用例的自然复制模式。但是,Redis从站异步确认它们定期与主站接收的数据量。因此,主服务器不会每次等待从服务器处理命令,但是如果需要,它知道什么从服务器已经处理了什么命令。这允许具有可选的同步复制。
客户端可以使用WAIT命令请求某些数据的同步复制。但是,WAIT只能确保在其他Redis实例中存在指定数量的已确认副本,它不会将一组Redis实例转换为具有强一致性的CP系统:在故障转移期间,确认的写入仍然可能丢失,具体取决于关于Redis持久性的确切配置。然而,对于WAIT,在失败事件之后丢失写入的概率已经大大降低,几乎不会触发
maser的复制是非阻塞的,slave在很大程度上也是非阻塞的。
- 主节点关闭持久性时的复制安全性
在使用Redis复制的设置中,强烈建议在主服务器和从服务器中启用持久性。如果无法做到这一点,例如由于磁盘速度很慢而导致延迟问题,则应配置实例以避免在重新启动后自动重新启动
试下,一个简单的主从配置,如果主挂了,无脑重启,主机会空启动,从而导致从复制到空,数据就全丢失了
当Redis Sentinel用于高可用性时,同时关闭主服务器上的持久性以及自动重启进程也很危险。例如,主设备可以足够快地重启以使Sentinel不检测故障,从而发生上述故障模式
所以真要关闭主节点的持久化,就用sentinel,也不要有在服务器上写一些自动重启的脚本
网友评论