redis主从复制
程序端连到高可用负载的VIP,然后连接到负载服务器设置的redis后端real server,此模式不需要再程序里面配置redis服务器的真实IP地址,当后期redis服务器IP地址发生变更只需要更改redi相应的后端real server即可,可避免更改程序中的IP地址设置。
主从复制特点:一个master可以有多个slave,一个slave只能有一个master,数据流向是从master到slave单向的。
redis slave也要开启持久化并设置和master同样的密码,因为后期slave会有提升为master的可能,slave端切换master同步后会丢失之前的所有数据,而通过持久化可以恢复数据。
一旦某个slave成为一个master的slave,redis slave服务会清空当前的redis服务器上的所有数据并将master的数据导入到自己的内存,但是如果只是断开同步关系后,则不会删除当前已经同步过的数据。
当配置redis复制功能时,强烈建议打开主服务器的持久化功能。否则的话,由于延迟等问题,部署的主节点redis服务器应该要避免自动启动。
如果结点A为主服务器,并且关闭了持久化。并且结点B和结点C从节点A复制数据。节点A崩溃,然后由自动拉起服务重启了节点A,由于节点A的持久化被关闭了,所有重启之后没有任何数据。节点B和结点C将从节点A复制数据,但是节点A的数据是空的,于是就把自己保存的数据副本删除。
启用主从同步
安装好之后,redis默认自己就是master,需要转换为slave角色并指向master服务器的IP+port+password在从节点执行replicaof master_IP master_port指令可以启用主从同步复制功能,早期版本使用slaveof命令。
在从上如果要指向Node1为主,由于Node1设置了密码,那么从上要有一条配置为masterauth [主的密码]
Node2上:默认自己就是主role:master
通过config动态配置:
主指向Node1,并设置密码:(主的密码)
这时主从就同步了。
测试:
在从上看是否同步过来:
删除主从同步:replicaof no one
在从节点执行该命令,可以取消主从复制,会断开与master的连接不再主从复制,但不会清楚slave
Node2从上:
从上也就变成了主了,断开主从复制。
---end---
Ongwu博客 版权声明:以上内容未经允许不得转载!授权事宜或对内容有异议或投诉,请联系站长,将尽快回复您,谢谢合作!