Redis主从复制(上)

举报
别团等shy哥发育 发表于 2023/02/04 16:48:31 2023/02/04
【摘要】 @toc下篇链接:https://blog.csdn.net/qq_43753724/article/details/117428696 1、Redis主从复制:Redis支持简单且以用的主从复制(master-slave replication)功能,该功能可以让从服务器(slave server)成为主服务器(master server)的精确复制品。 2、Redis主从复制能干什么?读...

@toc
下篇链接:https://blog.csdn.net/qq_43753724/article/details/117428696

1、Redis主从复制:

Redis支持简单且以用的主从复制(master-slave replication)功能,该功能可以让从服务器(slave server)成为主服务器(master server)的精确复制品。

2、Redis主从复制能干什么?

  • 读写分离
  • 容灾恢复

3、相关操作命令

3.1 SLAVEOF host port

通过执行 SLAVEOF host port 命令,可以将当前服务器转变为指定服务器的从属服务器(slave server)。

如果当前服务器已经是某个主服务器(master server)的从属服务器,那么执行 SLAVEOF host port
将使当前服务器停止对旧主服务器的同步,丢弃旧数据集,转而开始对新主服务器进行同步。 另外,对一个从属服务器执行命令 SLAVEOF NO
ONE 将使得这个从属服务器关闭复制功能,并从从属服务器转变回主服务器,原来同步所得的数据集不会被丢弃。 利用“SLAVEOF NO ONE
不会丢弃同步所得数据集”这个特性,可以在主服务器失败的时候,将从属服务器用作新的主服务器,从而实现无间断运行。

3.2 ROLE

返回实例在复制中担任的角色, 这个角色可以是 master 、 slave 或sentinel。

除了角色之外, 命令还会返回与该角色相关的其他信息, 其中: 主服务器将返回属下从服务器的 IP 地址和端口。
从服务器将返回自己正在复制的主服务器的 IP 地址、端口、连接状态以及复制偏移量。
Sentinel 将返回自己正在监视的主服务器列表。

3.3 info replication

查看主/从复制信息

4、读写分离实例

4.1、配从库不配主库

4.2、从库配置:

slaveof 主库IP 主库端口

说明:每次与master断开连接之后,都需要重新连接,除非你配置井redis.conf文件

4.3 修改配置文件细节操作

4.3.1 拷贝多个redis.conf文件

cd /usr/local/bin
ll

在这里插入图片描述
复制redis.conf文件:

cp redis.conf redis6379.conf
cp redis.conf redis6380.conf
cp redis.conf redis6381.conf

在这里插入图片描述
这里只演示下修改redis6379.conf的配置,其他两个就是把6379分别换成6380和6381即可

vi redis6379.conf

4.3.2 开启daemonize yes

在这里插入图片描述

4.3.3 修改pid文件名字

在这里插入图片描述

4.3.4 指定端口

在这里插入图片描述

4.3.5 设置Log文件名字

在这里插入图片描述

4.3.6 修改Dump.rdb文件名字

在这里插入图片描述

5、主从复制

即一个主服务器,两个从服务器

5.1 一主二仆

这里需要启动三个终端,并分别使用上面配置好的6379、6380、6381端口

5.1.1 启动并查看主从复制信息

6379端口:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
设置几个值:

set k1 v1
set k2 v2
set k3 v3
set k3 v4

6380端口:
在这里插入图片描述
6381端口:
在这里插入图片描述

可以看到没有配置之前,role的值都是master,即都是主服务器

5.1.2 将6380和6381端口配置成6379端口的从服务器

6380端口:

slaveof 127.0.0.1 6379

在这里插入图片描述
在这里插入图片描述
取值:
在这里插入图片描述
取主服务器设置的值也是没问题的

6381端口:

 SLAVEOF 127.0.0.1 6379

在这里插入图片描述
在这里插入图片描述

可以看到两个从服务器的role配置项的值变为了slave

5.1.3 日志查看

cd /usr/local/bin
ll

在这里插入图片描述

5.1.4 从机是否可以写?(验证读写分离)

假设三台服务器都要set k6(假设主机抢先设置)
主服务器:

set k6 v6

在这里插入图片描述
6380:

set k6 v66

在这里插入图片描述
6381:

set k6 v666

在这里插入图片描述
从结果来看,从机是不能写的,符合读写分离

5.1.5 书机SHUTDOWN后情况如何?从机是上位还是原地待命?

先关闭主机(6379):
在这里插入图片描述
查看从机的主从配置信息:
在这里插入图片描述
在这里插入图片描述
可以看到,从机还是从机,咸鱼翻身还是咸鱼,连接状态变为了down,从机原地待命

5.1.6 主机又回来后,主机新增记录,从机能否顺利复制?

重启主机,并设置值set k7 v7
在这里插入图片描述
从机获取k7:
6380:
在这里插入图片描述
6381:
在这里插入图片描述

从结果可以看到,从机可以复制

5.1.7 一台从机宕机后,依照原有它能跟上大部队吗?

将6380端口的从机断开:
在这里插入图片描述
设置主机(6379)设置set k8 v8
在这里插入图片描述

6381端口:
没问题
在这里插入图片描述
6380端口由于宕机了,我们重新启动后再获取k8
在这里插入图片描述
在这里插入图片描述
查看主从配置信息:从下图看这是6380端口的role已经编程master,和原来6379的主机断开了
在这里插入图片描述
尝试获取k8

get k8

在这里插入图片描述
再次将6380配置为6379的从机:

slaveof 127.0.0.1 6379

再次获取k8

get k8

在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。