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 规避复制风暴
    
    单主节点复制风暴,主节点重启,所有从节点复制
  • 相关阅读:
    common-pool2连接池详解与使用
    Nginx实现页面缓存
    Nginx实现动静分离
    lnmp环境下nginx配置‘负载均衡’
    用phpstudy搭建的lnmp环境下mysql授权远程连接
    新浪OAuth网络登录,请求access_token时遇到21323的错误
    使用curl进行模拟登录
    yii2.0分页
    yii2.0表单自带验证码
    yii2.0查询关联数据以及widgets小部件
  • 原文地址:https://www.cnblogs.com/ZhZhang12138/p/14887079.html
Copyright © 2011-2022 走看看