首页云计算redis主从复制

redis主从复制

时间2024-07-27 08:08:04发布ongwu分类云计算浏览49

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

Ongwu博客 版权声明:以上内容未经允许不得转载!授权事宜或对内容有异议或投诉,请联系站长,将尽快回复您,谢谢合作!

展开全文READ MORE
docker入门,这一篇就够了 C语言:WindowsAPI个人学习笔记(一)

游客 回复需填写必要信息