Redis主从复制(下)

举报
别团等shy哥发育 发表于 2023/02/04 16:48:11 2023/02/04
【摘要】 @toc上篇链接:https://blog.csdn.net/qq_43753724/article/details/117423529?spm=1001.2014.3001.5501 5.2 薪火相传:上一个Slave可以是下一个slave的Master,Slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻master的写压...

@toc
上篇链接:https://blog.csdn.net/qq_43753724/article/details/117423529?spm=1001.2014.3001.5501

5.2 薪火相传:

  • 上一个Slave可以是下一个slave的Master,Slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻master的写压力
  • 中途变更转向:会清除之前的数据,重新简历拷贝最新的
  • 命令:slaveof 新主库IP 新主库端口
    我们现在将6379作为主机,将6380作为6379的从机,将6381作为6380的从机

5.2.1 配置之前先查看主机的主从配置信息:

info replication

6379:
在这里插入图片描述

5.2.2 配置6381端口的主机位6380端口:

SLAVEOF 127.0.0.1 6380

5.2.3 查看6381端口的主从配置信息:

info replication

在这里插入图片描述

5.2.4 查看6380端口的主从配置信息:

在这里插入图片描述

可以看到6380端口的role还是slave,且从机为6381

5.2.5 查看主机6379端口:

在这里插入图片描述

可以看到6379端口的从机是6380

5.2.6 主机(6379端口)设置值:set k9 v9

在这里插入图片描述

5.2.7 从机获取值:

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

5.3 反客为主

假设配置之前,6379端口的机器为主机,6380和6381都是6379的从机。

5.3.1 假设主机挂掉:

在这里插入图片描述

5.3.2 配置6380反客为主

 SLAVEOF no one

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

5.3.3 让6381的主机变为6380

 SLAVEOF 127.0.0.1 6380

在这里插入图片描述

获取k10
在这里插入图片描述

5.3.4 6379重新启动:

在这里插入图片描述
可以看到,这个没有从机。获取k10也获取不到。

5.4 复制原理

  • Slave启动成功连接到master后会发送一个sync命令
  • Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步
  • 全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
  • 增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步,但是只要是重新连接master,一次完全同步(全量复制)将被自动执行

5.5 哨兵模式

5.5.1 什么是哨兵模式:

反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库
配置哨兵:假设现在的主机是6379端口,6380和6381端口的都是从机。

5.5.2 创建sentinel.conf文件

在自定义的目录下面创建sentinel.conf文件
我的目录是 /myredis/
在这里插入图片描述

touch sentinel.conf
vi sentinel.conf

在这里插入图片描述
在文件内添加:

sentinel monitor host6379 127.0.0.1 6379 1

意思让哨兵监听6379端口,上面最后一个数字1,表示主机挂掉后salve投票看让谁接替成为主机,得票数多少后成为主机

5.5.3 启动哨兵

cd /usr/local/bin
ll

在这里插入图片描述
启动:redis-sentinel /myredis/sentinel.conf
在这里插入图片描述

5.5.4 挂掉6379端口(原来的主机),测试哨兵的监控

在这里插入图片描述
查看哨兵的监控情况:
如下图,可以看到,投票选出新的master为端口为6381端口的机器。
在这里插入图片描述

5.5.5 查看6381(新的master)和6380端口的主从配置

info replication

6380端口:
在这里插入图片描述
6381端口:
在这里插入图片描述
可以看到,现在的情况是6381端口的机器为主机,6380端口的机器为从机。

5.5.6 如果之前的master重启回来,会不会冲突?

让6379端口的机器重启:

 redis-server /myredis/redis6379.conf
 redis-cli -p 6379

在这里插入图片描述
我们查看下改机器的主从配置:

info replication

在这里插入图片描述
可以看到,6379已经变成了6381的从机
再查看下6381的主从配置:在这里插入图片描述

可以看到主机6381下面有两个从机6379和6380

查看哨兵的监控情况:
在这里插入图片描述
可以看到,哨兵监控到原来的6379主机复活之后,将其作为了新挑选出的主机6381的从机。

5.6、复制的缺点:复制延时

由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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