首页 > 数据库 >Redis部署-主从复制

Redis部署-主从复制

时间:2024-02-27 14:33:41浏览次数:20  
标签:主从复制 redis slave 部署 主机 Redis 从机 master

原理

分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缓存无法接受写命令,无法支持高可用

标签:主从复制,redis,slave,部署,主机,Redis,从机,master
From: https://www.cnblogs.com/zly1015/p/18036533

相关文章

  • 【进阶篇】使用 Redis 实现分布式缓存的全过程思考(一)
    目录前言一、关于缓存二、基本数据结构三、缓存注解3.1自定义注解3.2定义切点(拦截器)3.3AOP实现3.4使用示例四、数据一致性4.1缓存更新策略4.2缓存读写过程五、高可用5.1缓存穿透5.2缓存击穿5.3缓存雪崩5.4Redis集群六、文章小结前言写在前面,让我们从3个问题开始今天的文章:......
  • 项目开发中 Redis 缓存和数据库一致性问题及解决方案
    引入Redis缓存提高性能如果公司的项目业务处于起步阶段,流量非常小,那无论是读请求还是写请求,直接操作数据库即可,这时架构模型是这样的:但随着业务量的增长,你的项目业务请求量越来越大,这时如果每次都从数据库中读数据,那肯定会有性能问题。这个阶段通常的做法是,引入缓存来提高读性......
  • 使用python批量删除redis key
     比如我的业务。刚上线默认为超级管理员新增权限--请导出id用于清缓存svc格式请注意分页需要导出全部selectCONCAT('@rbac/ent/aclgr/',e.id)as需要清理缓存的rediskeyfroment_rbac_groupewherenotexists(selectp.`groupid`froment_rbac_group_permissionp......
  • Redis扩展功能
    Redis事务一次操作执行多条命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入、不许加塞。由于redis只能在执行前检查一组命令的语法错误,在命令执行时出现异常没法全体回滚,所以是弱一致性。multi+exec组合正常执行执行前队......
  • Helm的安装与使用helm部署MySQL
    helm官网:https://helm.sh/安装Helm每个Helm版本都提供了各种操作系统的二进制版本,这些版本可以手动下载和安装。下载需要的版本解压(tar-zxvfhelm-v3.0.0-linux-amd64.tar.gz)在解压目录中找到helm程序,移动到需要的目录中(mvlinux-amd64/helm/usr/local/bin/helm)使用h......
  • Flink基础入门 模式概念(含案例 linux部署)
    Flink基础入门模式概念(含案例linux部署)一、flink简介flink引入大数据技术框架发展阶段总共有四代,mr-->DAG框架(tez)--->Spark流批处理框架,内存计算(伪实时)-->flink流批处理,内存计算(真正的实时计算)flinkvsspark<imgsrc="https://pic3.zhimg.com/v2-b29e9f603f8f467682a067299bc7......
  • 将 Redis 数据放置在 Controller 层还是 Service 层
    在三层架构中,将Redis数据放置在Controller层还是Service层,同样需要根据具体的业务需求和设计原则来决定。以下是一些常见的考虑因素:数据访问频率:如果某个数据在多个请求之间频繁被读取或写入,可以考虑将其放置在Service层的缓存中,以减少对Redis的频繁操作。这样可以提高......
  • 【性能测试】Redis中的缓存雪崩、缓存击穿、缓存穿透问题详解
    一.什么是缓存雪崩当我们提到缓存系统中的问题,缓存雪崩是一个经常被讨论的话题。缓存雪崩是指在某一时刻发生大量的缓存失效,导致瞬间大量的请求直接打到了数据库,可能会导致数据库瞬间压力过大甚至宕机。尤其在高并发的系统中,这种情况会导致连锁反应,整个系统可能会崩溃。1.......
  • CentOS下安装redis 详细步骤
    1、前言Redis版本6.2.5服务器版本LinuxCentOS7.664位2、下载Redis下载网址:https://redis.io/download/笔者使用wget在线下载wgethttp://download.redis.io/releases/redis-6.2.5.tar.gz3、解压、安装3.1使用tar解压压缩包tar-xzvfredis-6.2.5.tar.gz3.2......
  • Nacos集群使用docker构建和部署
    使用Dockers部署Nacos集群前置条件:已经安装docker已经有Mysql服务保存Nacos配置数据DockerSwarm集群已经初始化[root@swarmnacos]#dockernodelsIDHOSTNAMESTATUSAVAILABILITYMANAGERSTATUSENGINEVERSIONlbrj......