redis-主从复制

一 单机redis的问题和风险
1 机器故障(硬盘故障,系统崩溃)
2 容量瓶颈(内存不够)
解决
为了避免尽量避免这些问题,可以使用多台服务器相互连接,将数据备份在不同的服务器上,这样即便有服务器宕机,其他服务器依旧可以提供服务。实现redis的高可用和冗余备份。

二 多台服务器连接方案
主从复制即将master中的数据即时、有效的复制到slave中
特征:一个master可以拥有多个slave,一个slave只对应一个master

1 数据提供方服务器
master(主服务器,主节点,主库)
职责 :写数据;执行写操作时将变化的数据自动同步到slave
2 数据接受方
slave(从服务器,从节点,从库)
职责:读数据

三 主从复制作用
1 读写分离,master写,slave读,提高读写负载能力。
2 故障恢复,当master出现问题,由slave提供服务,快速实现故障恢复。
3 负载均衡:基于主从结构,配合读写分离,由slave分担master负载,并根据需求的变化,改变slave的数量,通过多个从节点分担数据读取负载,大大提高Redis服务器并发量与数据吞吐量
4 数据冗余:实现数据热备份,是持久化之外的一种数据冗余方式

四 主从复制工作流程
1 建立连接
方式一:客户端发送命令

 slaveof<masterip><masterport>

方式二:启动服务器参数

 redis-server -slaveof <masterip> <masterport>

方式三:服务器配置

slaveof <masterip> <masterport>

2 数据同步
一 在初次连接时,将master的数据全部同步到stave
二 将stave状态更新至master当前数据库状态
流程:
1 连接时,slave请求同步数据,master生成RDB文件,通过socket发送给slave,slave清空数据,执行RDB文件,这是全量复制
2 在生成RDB文件的同时,仍然有命令进入master,这部分命令进入复制缓存区,再发送给slave。这是部分复制

3 命令传播

当master数据库状态被修改后,导致主从服务器数据库状态不一致,此时需要让主从数据同步到一致的状态,同步的动作称为命令传播

master将接收到的数据变更命令发送给slave,slave接收命令后执行命令
命令传播阶段出现了断网现象
 网络闪断闪连 /忽略
 短时间网络中断 /部分复制
 长时间网络中断 /全量复制

部分复制的三个核心要素
 服务器的运行 id(run id)
 主服务器的复制积压缓冲区
 主从服务器的复制偏移量

服务器运行ID(runid)
 概念:服务器运行ID是每一台服务器每次运行的身份识别码,一台服务器多次运行可以生成多个运行id
 组成:运行id由40位字符组成,是一个随机的十六进制字符
例如:fdc9ff13b9bbaab28db42b3d50f852bb5e3fcdce
 作用:运行id被用于在服务器间进行传输,识别身份
如果想两次操作均对同一台服务器进行,必须每次操作携带对应的运行id,用于对方识别
 实现方式:运行id在每台服务器启动时自动生成的,master在首次连接slave时,会将自己的运行ID发
送给slave,slave保存此ID,通过info Server命令,可以查看节点的runid

复制缓冲区
 概念:复制缓冲区,又名复制积压缓冲区,是一个先进先出(FIFO)的队列,用于存储服务器执行过的命令,每次传播命令,master都会将传播的命令记录下来,并存储在复制缓冲区

复制缓冲区内部工作原理
组成
 偏移量
 字节值
工作原理
 通过offset区分不同的slave当前数据传播的差异
 master记录已发送的信息对应的offset
 slave记录已接收的信息对应的offset

主从服务器复制偏移量(offset)
 概念:一个数字,描述复制缓冲区中的指令字节位置
 分类:
 master复制偏移量:记录发送给所有slave的指令字节对应的位置(多个)
 slave复制偏移量:记录slave接收master发送过来的指令字节对应的位置(一个)
 数据来源:
master端:发送一次记录一次
slave端:接收一次记录一次
 作用:同步信息,比对master与slave的差异,当slave断线后,恢复数据使用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值