自学内容网 自学内容网

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)!