Redis学习之-----主从复制

互联网的三高:

  • 高可用
  • 高并发
  • 高性能

如果redis是单节点会出现以下问题:

  • 机器故障:
  • 容量瓶颈

redis主从复制:

为了避免单点Redis服务器故障,准备多台服务器,互相连通。将数据复制多个副本保存在不同的服
务器上,连接在一起,并保证数据是同步的。即使有其中一台服务器宕机,其他服务器依然可以继续
提供服务,实现Redis的高可用,同时实现数据冗余备份。

在这里插入图片描述
会提供两个或两个以上的机器进行搭建:
一个master作为数据的写入工作,其他的作为slave用于数据的读取

怎么解决数据的同步问题呢? 四个服务器数据如何相等呢?

将master中的数据复制到slave中

主从复制:

将主机master中的数据及时,有效的复制到多个从机slave中。

作用:

读写分离:master进行写slave进行读,提高读写负载
负载均衡:可以通过改变slave的数量来解决数度读取负载
故障恢复:
数据冗余:
高可用基石:

特征:

一个master有的多个slave,但是一个slave中有一个master

职责:

master:
  • 写入数据
  • 操作数据时候,同步到slave中
  • 读数据(一般master将数据读取功能关闭)
slave:
  • 读取数据
  • 写入数据(slave中写数据功能关闭)

主从复制的工作流程:

  1. slave连接master
  2. master进行数据同步
  3. 反复进行数据同步(命令同步阶段)

阶段一:建立连接

步骤一:slave连接master(slaveof masterIp masterProt)

  1. 客户端发送命令 slaveof 127.0.0.1 6379
  2. 启动服务器参数 redis-server -slaveof 127.0.0.1 6379
  3. 服务器配置 在config配置文件中添加 slaveof 127.0.0.1 6379

步骤二:master接受命令,并且响应
步骤三:slave保存master的端口和ip
步骤四:slave根据创建的信息创建一个连接master的socket
步骤五:slave会周期性的给master发送ping指令,检查是否连接畅通
步骤六:slave通过replconf listening-port 发送自己slave的信息
步骤七:master保存slave的端口号

结果:
master: 保存slave的的端口
slave: 保存master的的地址和端口
在这里插入图片描述
slave断开:
slave on one

slave断开连接后,不会删除已有数据,只是不再接受master发送的数据

阶段二:数据同步

步骤一:slave发送psync2告知master可以进行全量复制
步骤二:master会fork一个子进程(bgsave),同时开辟一个命令缓冲区,用来接受slvae数据同步时发来的操作指令
步骤三:bgsave会生成一个rdb的文件 ,通过socket连接传送到slave
步骤四:slave接收到rdb文件,清空以前的数据,执行 rdb的恢复过程
全量复制完成
步骤五:slave恢复完成之后,会告知master,向master索要缓冲区中的指令
步骤六:master将缓冲区中的指令以aof的形式发送到slave
步骤七:slae接收到之后,进行指令的重写bgrewriteaof,恢复数据

结果:
slave: 具有master中全部的数据
master:保存了slave当前同步数据的位置
在这里插入图片描述
数据同步阶段注意的问题

  • 如果master中的数据非常的庞大,数据的同步应该避开高峰期。
  • 在master和slave进行全量复制的时候会开辟一个缓冲区,假如缓冲区空间太小,造成数据移除,master和slave数据不一致,又会去全量复制

详细数据同步过程(数据同步+命令传播)

 年被·
缓冲区里面存储的数据类型:
在这里插入图片描述

心跳机制:

进入命令传播阶段候,master与slave间需要进行信息交换,使用心跳机制进行维护,实现双方连接保持在线

  • master心跳:

    • 指令:PING
    • 周期:由repl-ping-slave-period决定,默认10秒
    • 作用:判断slave是否在线
    • 查询:INFO replication 获取slave最后一次连接时间间隔,lag项维持在0或1视为正常
  • slave心跳任务

    • 指令:REPLCONF ACK {offset}
    • 周期:1秒
    • 作用1:汇报slave自己的复制偏移量,获取最新的数据变更指令
    • 作用2:判断master是否在线

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值