为什么在从机AOF配置成功的情况下,主机开启AOF,主从数据瞬间被清空?
首先得明白Redis有这么一个特性,即两种持久化同时开启的情况下,Redis启动默认加载AOF文件恢复数据。
Redis从机由于事先没有开启AOF,配置重启后,从机会生成一个空的AOF文件并默认加载,这时从机数据是空的,但由于配置了主从,从机会同步主机数据,所以你会发现新生成的AOF文件大小在迅速增长。因此Redis从机开启AOF后,数据最终是没有问题的。
这时候Redis主机也配置AOF并重启,主机生成AOF并默认加载,数据瞬间被清空,同时主机RDB发现60秒内有超过10000个key被修改,发起了快照保存,RDB数据也被清空。由于都是内存操作,所以非常快。最后再主从同步,所有数据被删。
配置不一致
1)例如maxmemory不一致 : 丢失数据
2)例如数据结构化参数(hash-max-ziplist-entries) : 内存不一致
规避全量复制
1)第一次全量复制
-
第一次不可避免
-
小主节点、低峰
2)节点运行ID不匹配
-
主节点重启(运行ID变化)
-
故障转移,例如哨兵或集群
3)复制积压缓冲区不足
-
网络中断,部分复制无法满足
-
增大复制缓冲区配置 rel_backlog_size ,网络"增强"