Redis数据库系列(五)、Redis主从复制

第五章、主从复制

学习目标

 主从复制简介
 主从复制工作流程
 主从复制常见问题

5.1、主从复制简介

  • 互联网“三高”架构
     高并发
     高性能也
     高可用
  • 单机redis的风险与问题
  • 问题1、机器故障
     现象:硬盘故障、系统崩溃
     本质:数据丢失,很可能对业务造成灾难性打击
     结论:基本上会放弃使用redis.
    redis是通过持久化将数据存储在内存中,即使redis服务器发生了重启数据基本也不会丢失(或是丢失极少量数据),但是因为数据时存储在一台服务器的内存中的,如果说这台服务器出现故障系统崩了,那么数据将会将会全部丢失。
  • 问题2、容量瓶颈
     现象:内存不足,从16G升级到64G,从64G升级到128G,无限升级内存
     本质:穷,硬件条件跟不上
     结论:放弃使用redis
  • 最终解决办法:
    为了避免单点Redis服务器故障,我们需要将数据复制多份分别部署在多台不同的服务器上,并且这多台服务器是互相连通的,保证数据同步。即使其中一台服务器出现宕机现象也不用慌,其他服务器依然可以继续提供服务,实现Redis的高可用,同时实现数据冗余备份。

其实这就用到了我们要学的主从复制,多台从机连接一台主机。
在这里插入图片描述

  • 提供数据放(收集数据方):master
    主服务器,主节点,主库
    主客户端
  • 接收数据方:slave
    从服务器,从节点,从库
    从客户端
  • 内部机制
    Redis内部机制提供了主机向多个从机自动复制数据的功能(数据同步)。
  • 主从复制主要特征
    一个master对应多个slave,而一个slave只能对应一个master。
    master:
    一个master可以对应多个slave,master主要负责写入数据,当然也可以读数据,但是一般不适用主机读数据。
    slave:
    slave主要负责读取数据,但是不可以写入数据。
  • 主从复制的作用:
     读写分离:master写、slave读,提高服务器的读写负载能力
     负载均衡:基于主从结构,配合读写分离,由slave分担master负载,并根据需求的变化,改变slave的数量,通过多个从节点分担数据读取负载,大大提高Redis服务器并发量与数据吞吐量
     故障恢复:当master出现问题时,立刻通过哨兵模式从多个从机中推选出一个服务器做主机master,来继续提供服务,实现快速的故障恢复
     数据冗余:实现数据热备份,是持久化之外的一种数据冗余方式
     高可用基石:基于主从复制,构建哨兵模式与集群,实现Redis的高可用方案

5.2、主从复制工作流程

  • 主从复制过程大体可以分为3个阶段
     建立连接阶段(即准备阶段)
     数据同步阶段
     命令传播阶段
    在这里插入图片描述
    在这里插入图片描述
  • 建立连接阶段工作流程:
    步骤1:设置master的地址和端口,保存master信息
    步骤2:建立socket连接
    步骤3:发送ping命令(定时器任务)
    步骤4:身份验证
    步骤5:发送slave端口信息
    至此,主从连接成功!
  • 状态:
    slave:保存master的地址与端口
    master:保存slave的端口
    总体:之间创建了连接的socket
  • 可以简单理解成如下图工作流程:
    在这里插入图片描述
  • 主从连接(slave连接master)
  • 方式一:客户端发送命令(redis服务器启动后指定主机ip和端口号,成为其从机)
    slaveof <masterip> <masterport>
    
  • 方法二:启动服务器参数(在redis服务器启动的时候直接指定主机ip和端口号,成为其从机)
    redis-server -slaveof <masterip> <masterport>
    
  • 方法三:在配置文件中配置参数(推荐)
    slaveof <masterip> <masterport>
    
  • 主从断开连接:客户端发送命令
    slaveof no one
    

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

5.2.1、模拟真实操作环境

将redis解压包复制四份在同一个文件夹中,方便管理,当然真实的环境,每台服务器可能都在不同的地区,如下图:
在这里插入图片描述1. 我们以端口号6379作为主机master,另外三台作为从机,先修改每台服务器的配置文件redis.windows.conf中的密码和端口号,如下图:
在这里插入图片描述
在这里插入图片描述
2. 上述操作做完,在redis解压包目录中创建一个redis-server服务启动集群和客户端连接服务集群,方便操作,省的以后每次启动和客户端连接服务都要重新乔代码。
在这里插入图片描述
在这里插入图片描述
这时我们启动服务器测试一下:
在这里插入图片描述
服务器都启动成功!!!
在这里插入图片描述
在这里插入图片描述
三台从机最好也都测试下,看是否连接成功,我的是都成功!!!
3. 配置好上述参数后,从机slave连接主机master,上面我们说了将端口号6379作为主机,此处以6380做测试,首先连接6380客户端
在这里插入图片描述

在这里插入图片描述
解决办法,打开6380从机slave的redis.windows.conf配置文件,加上如下图代码:
在这里插入图片描述
问题解决,重启6380服务器和客户端,再次连接主机6379:
在这里插入图片描述
再次查看6380服务器窗口:
在这里插入图片描述
查看6379主机服务器窗口:
在这里插入图片描述
同理再将另外两台服务器6381和6382连接上主机6379,再次查看6379服务器启动窗口:
在这里插入图片描述
4. 我们为了更加方便演示上述主从连接,使用可视化工具RedisDesktopManager来操作:
首先连接上所有服务器:
在这里插入图片描述
在这里插入图片描述
刷新另外三台从机,看是否能够获取数据:
在这里插入图片描述
结果显示三台从机slave都可以获取到主机master存入的数据username,这就是主从复制机制,当主机中存入数据时,会自动将数据冗余备份到多台从机服务器上,这样就保证了,哪怕其中一台从机服务器出现宕机或者系统崩了,不要紧,这个时候不用慌,其他同级的从机服务器依然可以继续提供服务,这就要很nice了吧。

注意:
如果说要是主机master出现宕机或者系统崩了怎么办,这也不要慌,下篇文章我们会讲解哨兵模式,就是如果说主机master崩了,利用哨兵模式及时从多台从机中推举一个服务器作为主机master,继续监控其他多台从机服务器提供服务。

下章节哨兵模式

5 . 我们上述还说了主从复制还有一个特性是,即使从机与主机断开连接,数据也不会丢失,只是不再接受主机写入的数据:
以6382服务器与主机断开连接测试为例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
到这里我们基本就了解了主从复制的基本功能了,主机master连接多台从机slave,主机负责写入数据(和获取数据),从机用来获取数据,主机与从机的数据是同步存在的。

6 . 另外我们前面从机在连接主机时,都是通过窗口命令执行的,而且每次启动都要重新连接,这样太麻烦了,为了方便,我们可以直接在配置文件中设置,如下图:
在这里插入图片描述
在这里插入图片描述
下章节哨兵模式

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一宿君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值