Redis主从复制(一)

单机redis的风险和问题
  • 问题1.机器故障
    • 现象:硬盘故障,系统崩溃
    • 本质:数据丢失,很可能对业务造成灾难性打击
    • 结论:基本上会放弃使用redis
  • 问题2.容量瓶颈
    • 现象:内存不足,从16G升级到64G等等无限升级…(总归会有一个界限)
    • 本质:穷,硬件条件跟不上
    • 结论:放弃使用redis
  • 结论
    为了避免单点redis服务器故障,准备多台服务器,互相连通.将数据复制多个副本保存在不同的服务器上,连接在一起,并保证数据是同步的,即使有其中一台服务器宕机,其他服务器依然可以继续提供服务,实现redis的高可用,同时实现数据冗余备份.
多条服务器连接方案
  • 提供数据方:master
    主服务器,主节点,主库,主客户端
  • 接收数据方:slave
    从服务器,从节点,从库,从客户端
  • 需要解决的问题:
    数据同步
  • 核心工作:
    master的数据复制到slave中
    在这里插入图片描述
主从复制简介

主从复制就是将master中的数据即时,有效的复制到slave中
特征:一个master可以拥有多个slave,一个slave只对应一个master
职责:

  • master
    • 写数据
    • 执行写操作时,将出现变化的数据自动同步到slave
    • 读数据(可忽略)
  • slave
    • 读数据
    • 写数据(禁止)
主从复制的作用
  • 读写分离:master写,slave读,提高服务器的读写负载能力
  • 负载均衡:基于主从结构,配合读写分离,由slave分担master负载,并根据需求的变化,改变slave的数量,通过多个从节点分担数据读取负载,大大提高redis服务器并发量和数据吞吐量
  • 故障恢复:当master出现问题时,由slave提供服务,实现快速的故障恢复
  • 数据冗余:实现数据热备份,是持久化之外的一种数据冗余方式
  • 高可用基石:基于主从复制,构建哨兵模式和集群,实现redis的高可用方案
主从复制工作流程

总述
主从复制过程大体可以分为三个阶段:

  • 建立连接阶段(准备阶段)

  • 数据同步阶段

  • 命令传播阶段
    在这里插入图片描述阶段一:建立连接阶段
    建立slave到master的连接,使master能够识别slave,并保存slave端口号

    1. 设置master的地址和端口,保存master信息
    2. 建立socket连接
    3. 发送ping命令(定时任务)
    4. 身份验证(redis一般是进行内网访问的,外界是访问不到的,所以身份验证可以不设置)
    5. 发送slave端口信息
    6. 最后的状态:
      • slave:保存master的地址和端口
      • master:保存slave的端口
      • slave和master之间建立了socket连接

    在这里插入图片描述
    主从连接(slave连接master)

  • 方式一:
    客户端发送命令(这里使用是在将不同服务器启动后指定哪个为master,哪个为slave)
    slaveof (masterip) (masterport)
    在这里插入图片描述
    启动slave机器,连接端口为6379的master机器

    • 方式一:客户端发送命令
      在这里插入图片描述
    • 方式二:启动服务器参数
      这是一种方式,还有另外一种方式是在启动服务器的时候直接指向master机器
      在这里插入图片描述
    • 方式三:服务器配置
      在slave机器的配置文件中设置master机器的ip和端口直接启动slave机器,就可以指定在6379master下了
      在这里插入图片描述
      主机和从机连接上之后会显示以下信息
      在这里插入图片描述slave机器中就会有master的信息
      在这里插入图片描述
      master机器中会有slave机器的相关信息
      查看服务器上连接的master/slave服务器的信息
      使用info命令,在Replication下可以看到对应的信息
      在这里插入图片描述在这里插入图片描述
  • 主从断开连接(一般不怎么用,slave服务器发送该命令,与master断开连接)
    客户端发送命令:
    slaveof no one

授权访问

  • master配置文件设置密码
    requirepass (password)
  • master客户端发送命令设置密码
    config set requirepass (password)
    config get requirepass
  • slave客户端发送命令设置密码
    auth (password)
  • slave配置文件设置密码
    masterauth (password)
  • 启动客户端设置密码
    redis-cli -a (password)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值