zoukankan      html  css  js  c++  java
  • Redis(五)——主从做读写分离原理与优化

    一、什么是主从复制

    一主一从,一主多从
    
    做读写分离(可以设置主写从读),做数据副本,扩展数据性能
    一个maskter可以有多个slave,一个slave只能有一个master
    数据流向是单向的,从master到slave

    二、复制到配置

    启动两个服务端:

    示例:在阿里云服务器上创建两个redis服务端配置文件(注意配置文件中的端口不同),使用不同的配置文件启动,用两个客户端分别连接。

    一个服务端配置文件是:redis_6379.conf,另一个服务端配置文件是:redis_6380.conf

    启动两个服务端命令redis-server redis_6379.conf        redis-server redis_6380.conf          #分开执行

    查看是否开启两个服务端:ps -ef|grep redis-server

    启动之后可以通过可视化工具连接

    两个客户端连接:(分别通过不同端口连接)

    做主从联系有两种方式

    方式一:直接执行slave命令

    6379是主,6380是从
    在6380客户端执行下面命令
    slaveof 127.0.0.1 6379 #异步

    #如果想取消复制,主从库就没关联了,但是之前的数据不会清除 slaveof no one

    在主库上设置键值

    在从库上面执行slaveof绑定主库

    方式二:配置文件方式

    主库配置文件

    daemonize yes
    port 6379
    bind 0.0.0.0
    protected-mode no
    dir "/root/data"
    logfile "6379.log"

    在从库的配置文件redis_6380.conf中加入这两句话

    slaveof ip port #配置主节点ip和端口
    slave-read-only yes #从节点只读,因为可读可写,数据会乱

    关掉之前的redis服务端连接,重新启动

    重新启动之后,在客户端不用再执行slave命令

    在主库直接set键值

    在从库就能直接获取,但是从库不能写入数据,只能读取

    三、复制常见问题

    1.读写分离

    读流量分摊到从节点
    
    可能遇到问题:复制数据延迟,读到过期数据,从节点故障

    2.主从配置不一致

    maxmemory不一致:丢失数据
    
    数据结构优化参数:主节点做了优化,从节点没有设置优化,会出现一些问题

    3.规避全量复制

    第一次全量复制,不可避免:小主节点,低峰(夜间)
    
    节点运行id不匹配:主节点重启(运行id变化)
    
    复制挤压缓冲区不足:增大复制缓冲区大小,rel_backlog_size

    4.规避复制风暴

    单主节点复制风暴,主节点重启,所有从节点复制

    。。。

  • 相关阅读:
    VS 2010 C#入门操作小技巧
    spring-data-jpa 多数据源
    Spring--3.Spring的单元测试
    Spring--5.IOC总结
    Spring--4.实验23.IOC容器的测试泛型依赖注入*
    Spring--2.Spring之IOC--IOC容器的22个实验(3)
    Spring--2.Spring之IOC--IOC容器的22个实验(2)
    Spring--2.Spring之IOC--IOC容器的22个实验(1)
    Spring--2.Spring之IOC--了解IOC容器
    Spring--1.了解Spring
  • 原文地址:https://www.cnblogs.com/wangcuican/p/12180380.html
Copyright © 2011-2022 走看看