• Redis主从复制/读写分离的配置


    无论是RDB还是AOF,都会存在数据丢失情况;如果想保证数据不丢失,同时实现高可用,可以使用Master-Slave模式

    1.Redis主从复制的作用

    • 读写分离
    • 容灾备份

    2.两种配置主从机的方式

    1. 通过命令方式
      在redis中使用slaveof命令指定主机是哪台机器。如果重启服务还要重新执行命令设置主从。
    2. 通过redis.conf方式

    3.配置过程

    1. 配从(库)不配主(库)
    2. 从库配置:slaveof 主库ip 端口号 如:(slaveof 127.0.0.1 6379)
    3. 修改配置文件
      • 拷贝多个redis.conf文件,作为配置其他服务的配置文件
      • 开启 daemonize yes
      • 指定端口

    4.主从复制分类

    4.1 一主二从

    配置步骤:

    1. 启动主库(master)./redis-cli -p 9001
    2. 查看主库连接信息 info replication
    3. 启动从库 ./redis-cli -p 9002./redis-cli -p 9001
    4. 查看从库的配置信息
    5. 使用 slaveof 命令配置从库 此处,两个从库都配置为:slaveof 127.0.0.1 9001(端口号可改)
    6. 查看从库配置信息,如下:

    在这里插入图片描述
    7. 对主库(master)进行写操作,对从库(slave)进行读操作

    特点:向主机写数据,就能同步到从机
    缺点:如果主机宕机,就不能写数据了

    4.2 薪火相传

    配置步骤:
    与一主二从相似,区别在于配置从库,呈链式

    • 第一个从库使用:slaveof 127.0.0.1 9001
    • 第二个从库使用:slaveof 127.0.0.1 9002

    示例:
    在这里插入图片描述
    准备多个redis服务的环境

    1. 准备三个配置文件,每个配置文件中使用的redis服务端口不同
      在这里插入图片描述
      修改配置文件的端口号,用vi redis-9001.conf命令打开配置文件
      在这里插入图片描述
      用同样的方式,将9002和9003的配置文件进行修改
      在这里插入图片描述
      启动三个服务redis-server,指定相应的配置文件就能启动三个redis服务了
      在这里插入图片描述
    2. 使用redis-cli -p 端口号 能用redis客户端连接指定端口的服务
      用三个客户端分别连接三个服务
      在这里插入图片描述
      在这里插入图片描述

    查看主库的配置信息
    在这里插入图片描述
    配置第一个从机
    在这里插入图片描述
    配置第二个从机
    在这里插入图片描述
    验证:
    主机写数据
    在这里插入图片描述
    从机9002读数据
    在这里插入图片描述
    从机9003读数据
    在这里插入图片描述
    当主机(9001)宕机后,从机(9002)变为主机,可以向9002写数据

    优点:如果主机宕机,则从机变为主机。
    缺点:如果有一个从机宕机,则后面的从机就不能同步前面的数据了。

    4.3 反客为主

    配置步骤

    1. 启动主库(master)
    2. 查看主库的连接信息
    3. 启动从库
    4. 查看从库的配置信息
    5. 使用slaveof 命令配置从库 两个从库都使用:slaveof 127.0.0.1 6379
    6. 查看从库的配置 主库关闭时,第一个从库执行slaveof no one 断开变为主库,第二个从库使用slaveof 127.0.0.1 6380连接修改后的主库
    7. 如果Master再启动时,使用 slaveof连接6380,使它自己变成从库

    特点:如果主机宕机,推选一个从机变为主机,其他的从机变为新主机的从机。是手动方式

    4.4 哨兵模式

    自动的反客为主,当一个主机宕机,由哨兵服务自动推选一个从机作为主机,自动更改各个redis服务的配置文件。

    Redis-Sentinel是官方推荐的高可用解决方案,当redis在做master-slave的高可用方案时,假如master宕机了,redis本身(以及其很多客户端)都没有实现自动进行主备切换,而redis-sentinel本身也是独立运行的进程,可以部署在其他与redis可通讯的机器中监控redis集群

    Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务:

    • 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
    • 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。 自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel
      会开始一次。
    • 自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址,
      使得集群可以使用新主服务器代替失效服务器。

    哨兵模式的搭建步骤

    1. 自定义的/etc目录下新建sentinel.conf文件;
    2. 在此文件中增加 sentinel monitor 被监控数据库名字(自己起名字,例如master6379 127.0.0.1 6379 2 • 代表多少个从机认为主机下线可以开始投票
    3. 启动哨兵 • redis-sentinel /etc/sentinel.conf
    4. 启动主机及从机 • 启动redis后,主机挂掉后,从机上位;

    从redis的安装目录拷贝哨兵的配置文件到redis的bin目录中
    在这里插入图片描述
    修改哨兵的配置文件
    在这里插入图片描述
    其中最后的1 代表如果有1个哨兵服务连接不上主机(即规定连不上主机的哨兵服务的个数),则要选举新的主机。

    5 复制的原理

    • slave启动成功连接到master后会发送一个sync命,Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步
    • 全量复制:当从机连接到主机时,发送同步请求,主机将数据同步给从机
    • 增量复制:当主机更新数据时,将更新的内容同步给从机要是重新连
  • 相关阅读:
    【Python项目】毕业设计必备——Python实现一个GUI版本的学生信息管理系统 | 附源码
    金融行业备份容灾:如何满足严格行业标准同时实现成本效益优化?
    前端代码上线前验证whistle
    export default 和 export之间的区别
    CSS元素
    云借阅图书管理系统[基于SSM框架的项目]
    Jmeter压力测试教程(上)
    AJAX——AJAX的异步与同步、AJAX代码封装
    微信小程序真机调试连接状态一直在正常和未链接之间反复横跳?
    【Vue】——前端框架的基本使用
  • 原文地址:https://blog.csdn.net/aigo_2021/article/details/126368169