redis主从复制
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的安装,看我前面文章,redis的安装
启用主从同步
Node1作为主服务器,Node2作为从服务器
安装好之后,redis默认自己就是master,需要转换为slave角色并指向master服务器的IP+port+password在从节点执行replicaof master_ip master_port指令可以启用主从同步复制功能,早期版本使用slaveof命令。
在主Node1上设置一个登录密码:
#无密码登录:
[root@Node1 redis]#:redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> config set requirepass 123456 #设置密码为123456
OK
127.0.0.1:6379>
#使用无密码登录测试
[root@Node1 redis]#:redis-cli
127.0.0.1:6379> ping
(error) NOAUTH Authentication required. #需要输入密码
127.0.0.1:6379>
[root@Node1 redis]#:redis-cli -a 123456 #密码登录
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>
在从上如果要指向Node1为主,由于Node1设置了密码,那么从上要有一条配置为masterauth [主的密码]
Node2上:默认自己就是主role:master
[root@Node2 redis]#:redis-cli
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:0
master_replid:0e1b2a50ff9cfbe3e0dc3142edf2a359f9d80cf9
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:6379>
通过config动态配置:
主指向Node1,并设置密码:(主的密码)
[root@Node2 redis]#:redis-cli
127.0.0.1:6379> replicaof 192.168.114.10 6379
OK
127.0.0.1:6379> config set masterauth 123456
OK
这时主从就同步了。
测试:
在主上设置一个键值,set name linux
在从上看是否同步过来:
在从slave上只能读数据,不能写入数据。
删除主从同步:replicaof no one
在从节点执行该命令,可以取消主从复制,会断开与master的连接不再主从复制,但不会清楚slave
Node2从上:
从上也就变成了主了,断开主从复制。
---end---
原文地址:https://blog.csdn.net/2301_78327423/article/details/140422742
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!