• 八.Redis 主从复制


    主机数据更新后根据配置和策略, 自动同步到备机的 master/slaver 机制,Master 以写为主,Slave 以读为主,主从复制节点间数据是全量的。

    作用:

    • 读写分离,性能扩展
    • 容灾快速恢复

    image-20210619111652745

    8.1复制原理

    • Slave 启动成功连接到 master 后会发送一个 sync 命令;

    • Master 接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master 将传送整个数据文件到 slave,以完成一次完全同步。

    • 全量复制:slave 服务器在接收到数据库文件数据后,将其存盘并加载到内存中。

    • 增量复制:Master 继续将新的所有收集到的修改命令依次传给 slave,完成同步。

    • 但是只要是重新连接 master,一次完全同步(全量复制) 将被自动执行。

    image-20210619112440704

    8.2哨兵模式 (sentinel)

    反客为主:当一个 master 宕机后,后面的 slave 可以立刻升为 master,其后面的 slave 不用做任何修改。用 slaveof no one 指令将从机变为主机。而哨兵模式是反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。

    image-20210619154258222

    当主机挂掉,从机选举产生新的主机

    • 哪个从机会被选举为主机呢?根据优先级别:slave-priority 。
    • 原主机重启后会变为从机。

    复制延时

    由于所有的写操作都是先在 Master 上操作,然后同步更新到 Slave 上,所以从 Master 同步到 Slave 机器有一定的延迟,当系统很繁忙的时

    候,延迟问题会更加严重,Slave 机器数量的增加也会使这个问题更加严重。

    故障恢复

    image-20210619154850009

    优先级:在 redis.conf 中默认 slave-priority 100,值越小优先级越高。

    偏移量:指获得原主机数据最全的概率。

    runid:每个 redis 实例启动后都会随机生成一个 40 位的 runid。

  • 相关阅读:
    Excel 将某个序列随机重排 N 次
    Postman —— 配置环境变量
    【 C++ 】vector的模拟实现
    golang报错fatal error: all goroutines are asleep - deadlock
    2022-09-07 mysql/stonedb-多线程遍历元组问题分析
    数字马力面试题
    辉芒微IO单片机FT60F025-TRB
    [附源码]Python计算机毕业设计大学生社团管理系统
    Java多线程及原理
    RocketMQ 源码一,启动篇
  • 原文地址:https://blog.csdn.net/qq_42428269/article/details/126208054