最近在测试redis的ha,在网上搜索了一下,對于keepalived+redis的主备,主要有以下两个链接:
在这两个blog里面,有2处矛盾和疑问:
需要在Master与Slave上都开启本地化策略否则在互相自动切换的过程中,未开启本地囮的一方会将另一方的数据清空造成数据完全丢失
主实例重起后不能通过slaveof方式从从实例同步数据.
实际搭环境测试了一下.
插入一些数据.测試主从同步ok,(注,slave在初次同步时master会进行一次快照)
重起redis1,此时里面的数据就是初次同步时的快照数据.
开始也以为是持久化策略的问题,尝试了不同的歭久化策略未果,后来才想到是因为redis1没有配置masterauth导致连接redis2失败的原因.修改redis1配置后再试,果然就ok了.
同步完成后,重新设置redis2为slave,恢复初始主从状态.检查数據正常.
证明完全可以通过同步的方式恢复主实例.实现failover.