zoukankan      html  css  js  c++  java
  • Redis_主从复制

    Redis 主从复制

    1. 概述

    • 数据的复制都是单向的, 只能由主节点到从节点, Master 以写为主, Slave 以读为主
    • 主从复制, 读写分离, 主要是解决读的问题 ==> 80% 的情况下都是在进行读操作! 减缓服务器的压力! 架构中经常使用! 一主二从
    • 默认情况下, 每台Redis服务器都是主节点

    2. 环境配置

    只配置从库, 不用配置主库

    • info replication ====> 查看当前库的信息

    • image-20201026092031805

    • 复制三个配置文件, 然后修改对应的信息

      • 端口号
      • image-20201026093109953
      • 文件的pid
      • image-20201026093217136
      • log文件
      • image-20201026093348107
      • 持久化的文件名
      • image-20201026093329403
    • 打开服务, 看到生成了对应的log文件, 说明该服务已经成功启动了!

    • image-20201026093630385

    • 查看我们开启的redis服务

    • image-20201026093753698

    3. 一主二从搭建

    • 我们一般情况下, 只用配置从机就好了!

    • 认老大, 一主(79)二从(80,81)

    • 从机配置 ====> slaveof host port

    • image-20201026095015889

    • 主机的信息

    • image-20201026095131464

    • 真实的主从配置应该在配置文件中配置, 这样的话就是永久的!, 在配置文件中的replication下配置replicaof

    4. 细节

    • 主机可以写, 从机不能写, 只能读

    • image-20201026100720672

    • 主机中的所有信息和数据, 都会自动被从机保存

    • 主机断开连接, 从机依旧连接到主机, 但是没有些操作了. 如果主机回来了, 从机依旧可以直接获取到主机写的信息

    • 如果是是用命令行来配置的主从, 这个时候, 如果重启了, 就会变回主机

    • 只要变回从机, 立马就会从主机中获取值!

    • *命令 slaveof no one ====> 使自己成为主机, 其他的节点就可以手动连接到这个最新的主节点*

    5. 哨兵模式

    • 自动选取老大的模式!

    • Redis从2.8开始正式提供了 Sentinel (哨兵) 架构来解决这个问题

    • 哨兵是一个独立的进程, 他会独立运行, 其原理是 哨兵通过发送命令, 等待 Redis 服务器响应, 从而监控运行的多个Redis实例

    • 我们可以使用多哨兵模式, 哨兵之间也会进行监控

    1. 测试

    • 我们目前的状态是一主二从

    • 配置哨兵配置文件

      • 新建 sentinel.conf 文件

      • 在配置文件中写如下配置 (这是最核心的配置)

      • #sentinel monitor myredis 被监控的名称 127.0.0.1 主机的ip地址 6379  主机的端口 1
        sentinel monitor myredis 127.0.0.1 6379 1
        
      • 后面的这个数字 1 代表主机挂了之后, slave 投票看让谁接替成为主机, 票数最多的, 就会成为主机

    • 启动哨兵

      • redis-sentinel 配置文件的路径
      • image-20201026103901086
    • 如果主节点挂了, 哨兵过一会可以发现, 并投票选出新的主节点

    • image-20201026104405256

    • 主节点回来之后, 只能作为从机

    • image-20201026105034528

    2. 优缺点

    • 优点
      • 哨兵集群, 基于主从复制模式, 所有的主从配置的优点, 他全有
      • 主从可以切换, 故障可以转移, 系统的可用性就会更好
      • 哨兵模式就是主从模式的升级, 手动到自动, 更加健壮
    • 缺点
      • Redis不好在线扩容, 集群容量一旦到达上限, 在线扩容就十分麻烦
      • 实现哨兵模式的配置其实是很麻烦的, 里面有很多选择!
  • 相关阅读:
    JS 实现图片模态框,幻灯片,跑马灯功能
    JavaScript 实现表格单列按字母排序
    JavaScript 进度条重复加载
    JS / CSS 实现的便签记录本
    HTML CSS, JavaScript 计算器
    JS/CSS 各种操作信息提示效果
    JS/CSS 在屏幕底部弹出消息
    Immer 实战讲解
    mixin配合class实现多继承的绝佳妙用
    Axios源码深度剖析
  • 原文地址:https://www.cnblogs.com/wang-sky/p/13877373.html
Copyright © 2011-2022 走看看