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

    原理

        1. 副本库通过slaveof 127.0.0.1 6379命令,连接主库,并发送SYNC给主库 
        2. 主库收到SYNC,会立即触发BGSAVE,后台保存RDB,发送给副本库
        3. 副本库接收后会应用RDB快照
        4. 主库会陆续将中间产生的新的操作,保存并发送给副本库
        5. 到此,我们主复制集就正常工作了
        6. 再此以后,主库只要发生新的操作,都会以命令传播的形式自动发送给副本库.
        7. 所有复制相关信息,从info信息中都可以查到.即使重启任何节点,他的主从关系依然都在.
        8. 如果发生主从关系断开时,从库数据没有任何损坏,在下次重连之后,从库发送PSYNC给主库
        9. 主库只会将从库缺失部分的数据同步给从库应用,达到快速恢复主从的目的

    如何配置

    方式一:
            -在从库执行 SLAVEOF 127.0.0.1 6379-断开关系 slaveof no one
        方式二:配置文件(配在从库的配置文件中)
            slaveof 127.0.0.1 6379
            slave-read-only yes

    复制常见问题

    1 读写分离
    
    读流量分摊到从节点
    
    可能遇到问题:复制数据延迟,读到过期数据,从节点故障
    
    2 主从配置不一致
    
    maxmemory不一致:丢失数据
    
    数据结构优化参数:主节点做了优化,从节点没有设置优化,会出现一些问题
    
    3 规避全量复制
    
    第一次全量复制,不可避免:小主节点,低峰(夜间)
    
    节点运行id不匹配:主节点重启(运行id变化)
    
    复制挤压缓冲区不足:增大复制缓冲区大小,rel_backlog_size
    
    4 规避复制风暴
    
    单主节点复制风暴,主节点重启,所有从节点复制
  • 相关阅读:
    2018.8.5 复习笔记
    C#抽象类与接口的区别【转】
    double转整数问题
    C++学习笔记
    BCG使用
    C++设计模式之工厂方法模式
    静态成员函数
    CTreeCtrl 控件使用总结
    WinAPI: ShellExecute
    C++ STL map使用
  • 原文地址:https://www.cnblogs.com/ZhZhang12138/p/14887079.html
Copyright © 2011-2022 走看看