4.redis-主从复制

文章介绍了Redis主从复制的概念、解决的问题、好处,详细阐述了如何搭建1个master和1个slave的结构,以及主从复制的建立链接、数据同步、部分复制的三要素和命令传播等阶段。此外,提到了网络中断情况下的复制策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

01-主从复制概述

  • 单机redis存在的问题

    • ①硬盘故障, 导致数据丢失, redis不好用;
    • ②内存容量受限制, 单台服务器内存扩展有上限, 内存数据超过该上线, 该如何处理.
  • 解决方案

    • image-20230304092802133

    • 1个master可以有多个slave, 1个slave只能对应1个master

    • master: 主机, 可以读也可以写, 主要负责写.

    • slave: 从机, 只能读.

    • 保证master和slave数据同步.

  • 主从复制

    • 将master中的数据实时地, 有效地同步到从机.
  • 好处

    • 读写分离: master只负责写, slave只负责读
    • 负载均衡: 多台redis服务器分担客户端负载
    • 故障恢复: master宕机, 由slave提供服务
    • 数据冗余: 数据备份到多台redis服务器
    • 高可用: 是哨兵和集群的基础

02-主从复制搭建及演示

  • 需求

    • 搭建1主1从的结构
  • 配置说明

    #从机的配置文件
    slaveof 主机ip 主机port
    
  • ①master配置文件

    port 6379
    daemonize no
    # logfile "log-6379.log"
    maxclients 100000
    timeout 0
    loglevel debug
    
    # RDB设置
    # 1.设置rdb文件名
    dbfilename "dump-6379.rdb"
    
    # 2.设置rdb文件存储路径
    dir /usr/local/redis-6379/data
    
    # 3.设置存储rdb时是否压缩数据
    rdbcompression no
    
    # 4.设置读写文件过程是否进行RDB格式校验
    rdbchecksum no
    
    # 5.后台存储过程中如果出现错误现象,是否停止保存操作
    stop-writes-on-bgsave-error yes
    
    # 6.每隔10秒检测一次,有2个数据变化就执行bgsave指令
    save 10 2
    
    # AOF设置
    # 1.开启aof持久化功能
    appendonly yes
    # 2.设置aof文件名
    appendfilename 'appendonly-6379.aof'
    # 4.设置aof策略
    appendfsync everysec
    
    # 5.当前aof文件大小达到64mb,自动触发AOF重写
    auto-aof-rewrite-min-size 64mb
    # 5.当前aof文件大小比之前aof文件大小增加了100%,自动触发AOF重写
    auto-aof-rewrite-percentage 100
    
    protected-mode no
    
  • ②slave配置文件

    port 26379
    daemonize no
    # logfile "log-26379.log"
    maxclients 100000
    timeout 0
    loglevel debug
    
    # RDB设置
    # 1.设置rdb文件名
    dbfilename "dump-26379.rdb"
    
    # 2.设置rdb文件存储路径
    dir /usr/local/redis-26379/data
    
    # 3.设置存储rdb时是否压缩数据
    rdbcompression no
    
    # 4.设置读写文件过程是否进行RDB格式校验
    rdbchecksum no
    
    # 5.后台存储过程中如果出现错误现象,是否停止保存操作
    stop-writes-on-bgsave-error yes
    
    # 6.每隔10秒检测一次,有2个数据变化就执行bgsave指令
    save 10 2
    
    # AOF设置
    # 1.开启aof持久化功能
    appendonly yes
    # 2.设置aof文件名
    appendfilename 'appendonly-26379.aof'
    # 4.设置aof策略
    appendfsync everysec
    
    # 5.当前aof文件大小达到64mb,自动触发AOF重写
    auto-aof-rewrite-min-size 64mb
    # 5.当前aof文件大小比之前aof文件大小增加了100%,自动触发AOF重写
    auto-aof-rewrite-percentage 100
    
    protected-mode no
    
    #主机ip和主机port
    slaveof 192.168.199.110 6379
    
  • ③启动主机

    • gqwa34w3yu4h6
  • ④启动从机

    • rfw3afr3q4aweetfg
  • ⑤演示主从结构

    • 分别使用redis客户端链接主机和从机操作读写指令.

03-主从复制之建立链接阶段

  • 建立链接阶段

    • gvae4yhu654twe3s
  • 总结

    • ①master保存了slave的port
    • ②slave保存了master的host和port
    • ③master和slave建立心跳机制(ping/pong)

04-主从复制之数据同步阶段

  • 数据同步阶段

    • fay45632w7y7u463
  • 总结

    • ①第一次链接, 通过全量复制(RDB)将master的数据备份到slave
    • ②后续的指令, 通过部分复制(AOF)将master的数据备份到slave

05-部分复制的三要素

  • 三要素
    • ①服务器运行id(run id)
    • ②主服务器的复制缓冲区
    • ③主从服务器的复制偏移量
  • ①服务器运行id(run id)
    • w4hyio8ku65q23e4ftft
  • ②主服务器的复制缓冲区
    • tgy53r4vdewqauyh456w3tes
  • ③主从服务器的复制偏移量
    • 从机应该从哪里开始执行部分复制
    • 1个master有多个偏移量, 1个slave有一个偏移量

06-主从复制之命令传播阶段

  • 命令传播阶段
    • 当master数据库状态被修改后,导致主从服务器数据库状态不一致,此时需要让主从数据同步到一致 的状态,同步的动作称为命令传播 master将接收到数据变更命令发送给slave,slave接收命令后执行
  • 网络出现问题
    • 网络闪断闪连,可以忽略
    • 短时间网络中断,部分复制 (AOF)
    • 长时间网络中断,全量复制(RDB)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小钱要努力

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

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

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

打赏作者

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

抵扣说明:

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

余额充值