Redis部署-主从复制

原理

分master和slave;master以写为主,slave只支持读,master的数据发生变化时自动同步到slave。

作用

  • 读写分离:主机提供写,从机提供读,可提高性能,分散负载压力
  • 容灾恢复:主机与从机数据一致,其中一台机器宕机后,另一台机器能正常使用
  • 数据备份:主机与从机分散在不同的机器,数据一致,起到了数据备份的作用
  • 水平扩容:可以增加机器数量,达到扩容效果

实践

主机与从机搭建

主机配置不用做单独调整,参考Redis部署-单机部署
从机需要配置主机的信息,配置文件redis.conf

# 指定主机ip和端口
replicaof 127.0.0.1 6379
# 指定主机密码
masterauth redis

效果验证

通过info replication命令可以查看当前redis服务的信息
主机:
image

  • role:master表示当前redis为主机
  • slave:展示跟随的从机信息

从机:
image

  • role:slave表示当前redis为从机
  • master_: 展示相关主机信息

主从复制特征

  • 主机宕机后从机仍然可以使用,执行读命令,不可执行写命令,等待主机重启
  • 从机宕机后,重启时会重新同步主机数据,不会导致数据丢失
  • 从机注释主机配置后重启,会脱离出从复制关系,成为单独的主机
  • 在主机中执行slaveof ip port命令可以动态改变主从复制关系;服务重启后失效

主从复制拓扑架构

一主多从

一个主机,多个从机;多个从机都指向唯一的主机
image

树形结构

多层主从结构,从机可以是其它从机的主机;可以分担主机的数据同步压力,这种结构中拥有从机的从机仍然只拥有读权限
image
这种结构增强了数据同步能力,确保了数据的一致性;但是主从关系变的复杂,增加了管理难度。

主从复制运行原理

  1. slave启动,初次同步请求
    slave启动成功连接到master后会发送一个sync命令;首次接受同步时,会执行全量复制,slave自身的原有数据会被master覆盖。
  2. 首次连接,全量复制
    master接受到首次sync命令后会保存快照,同时收集所有修改命令;快照持久化完成后会将快照文件以及修改命令发送到slave;slave节点在接受到同步文件后开始全量同步。
  3. 心跳持续,保持通信
    redis.conf中的repl-ping-replica-period配置心跳间隔时间,默认10s;master根据心跳时间持续向各slave节点发送ping命令
  4. 进入平稳,增量复制
    master持续将新的修改命令自动一次传递给slave
  5. 从机下线,重新续传
    matser接受到slave重启发送的sync命令后,会检查backlog里面的offset(记录slave上次同步的数据位置),将offset后面的数据复制给slave。

主从复制的确定

  • 只有maste节点接受写命令,会成为性能瓶颈
  • master宕机或网络抖动,整个redis缓存无法接受写命令,无法支持高可用
posted @ 2024-02-27 14:23  周仙僧  阅读(10)  评论(0编辑  收藏  举报