Redis7_06 基础篇 第六章 Redis复制(replica)

 1 Redis复制(replica)简介

定义

        就是主从复制,master只关心写或读操作,Slave只关心读操作,当master的数据库变化的时候,自动将新的数据异步同步到其它slave数据库.

Redis复制的特点

  1. 高可用性: 通过复制,可以实现主从架构,即使主服务器发生故障,从服务器仍然可以继续提供服务。

  2. 数据冗余: 复制可以确保数据在多个节点之间的冗余存储,提高数据的安全性和可靠性。

  3. 读写分离: 可以利用从服务器来分担主服务器的读取压力,实现读写分离,提高系统的性能和扩展性。

原理

        Redis复制的原理主要基于以下几个步骤:

  1. 复制初始化: 从服务器连接到主服务器,并发送SYNC命令进行复制初始化

  2. 全量复制: 主服务器将当前数据集的快照发送给从服务器,从服务器加载数据集并开始复制主服务器的写操作。

  3. 部分复制: 之后的复制过程中,主服务器将写操作发送给从服务器,从此服务器只接收并执行这些写操作,保持数据同步。

  4. 心跳检测: 主从服务器之间会保持心跳检测,一旦发现连接断开或数据不一致,会重新进行同步。

执行流程

  1. 从服务器连接到主服务器并发送SYNC命令进行复制初始化。

  2. 主服务器生成并发送RDB文件(快照文件)给从服务器。

  3. 从服务器加载RDB文件,将数据集恢复到当前状态,开始接收主服务器的写操作。

  4. 主服务器将所有写操作发送给从服务器,从服务器执行这些写操作以保持数据同步。

  5. 主从服务器保持心跳检测以确保连接的可靠性和数据的一致性。

原理和执行流程口诀

slave启动 同步初请
首次连接  全量复制
心跳持续  保持通信
进入平稳  增量复制
从机下线  重连续传

2 实战演示前置说明

        此教程实现主从复制的方案是 使用同机不同端口的三个redis来实现一主二从

也就是同个ip下创建三个redis服务.

        有条件的人可以开三台虚拟机,也就是使用三个不同的ip来实现,更加模拟实际生产中使用不同的机器实现主从复制的情形.

配置注意事项

配从不配主

        对于主从关系这一声明  要在从机上去配置 

权限相关

        主机有requirepass的配置时 从机配置时还需要配置 masterauth 设置主机的密码,否则主机master将会拒绝从机的连接

相关命令汇总

nfo replication
可以查看复制节点的主从关系和配置信息

replicaof 主库IP 主库端口

slaveof 主库IP 主库端

slaveof no one    设置本机不再是任何redis服务的从机

3 实战演示

配置三个Redis服务的配置文件

因为主机我们设置了密码所以(建议设密码,不设置密码实际生产非常危险)

        主机只需要配置1-10步

        从机必须需要配置1-11步

此外第十步可以不修改 自行选择 由于之前的学习我开启了aof 此处也就没有修改它

        前三步我们第零章就已经配置过了,如果跟着视频或者教程配置过的话,直接复制过来的三份就不需要配置了

1.开启daemonize yes
2.注释掉bind 127.0.0.1 0
3. protected-mode no
4.指定端口

        对于不同的配置文件 注意配置成不同的端口 因为我使用的是同一ip

        
5.指定当前工作目录

        
6.pid文件名字,pidfile

        不同的机器,后面跟上不同的端口号

        
7.log文件名字,logfile

        不同的机器,配置成其 端口.log

        
8.requirepass

        之前配置过 三台机器都可以配置

        
9.dump.rdb名字

        不同的机器 配成dump加其端口号

        
10.aof文件appendfilename 

        这一步三台机器都可以不配 自己选择

        

        
11.建立从机和主机的关系 外加 从机访问主机的通行密码masterauth,从机需要配置,主机不用

        

实战演示

一主二从

配置文件生效的主从关系

第一步 按照各自的配置文件启动服务

去查看 主机的日志 发现显示 主从机连接成功了

去查看 从机的日志 也显示着 主从机链接成功了

查看主机和从机的 复制相关信息

info replication

主机

从机

查看是否实现了主从复制

结果显示从机可以获取到主机写入的key

从机可以写操作吗?

从机不能写 只能读

从机切入点问题

建立主从之前 从机写入了一些数据, 写入之后, 从机才连接上主机, 从机会有全部得到数据吗?

结果显示 会有

主机shutdown后 从机会上位吗

不会, 从机将会原地待命,直到主机重新启动  此时的redis可读不可写 处于半瘫痪状态

主机shutdown后 重启后 主从关系还能自动继续吗

可以

手动命令实现的主从关系

        修改配置文件,让二三号机不再有主机

        

        

        这时我们在全部启动

        

        使用命令 slaveof ip 端口号 来手动的指定从机的主机

slaveof 127.0.0.1 6379

        

        

        手动命令设置的主从关系,重启从机后,主从关系还在吗?

        不在了,手动设置的主从关系只在一次实例中有效

        

薪火相传

        上一个slave可以是下一个slave的master,slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master
        可以有效减轻主master的写压力
        中途变更转向:会清除之前的数据,重新建立拷贝最新的
        命令:        

slaveof 新主库IP 新主库端

        演示之前,先回到 一主二从的形式

        

        

        手动更改三号机器的master

        

        查看主机的 复制信息

        

        查看6380的复制信息

        仍然是从机,但是它后面连接了一个 6381 从机

        

        查看6381的 复制信息

        81的主机显示为80

        

        这样的薪火相传的方式仍然可以实现主从复制

        二号机器虽然是三号机的主机 但仍然不能执行写操作

        

        

反客为主

        执行命令 即可

        设置 当前机器不再是任何redis的从机 言外之意 设置当前机器为主机

slaveof no one

        

4 Redis复制的缺点

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

        此外,如果出现master宕机的情况,从机将全部待命,无人上位,一旦出现这种情况,整个Redis处于可读不可写的半瘫痪状态,这是非常危险的,会造成比较大的损失.(为了解决这一点, 便引入了Redis的哨兵和集群机制)

  • 41
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤尘Java

感谢认可!感谢您的打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值