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

      

    常见的主从形式

    第三种是因为slave太多,都从master同步数据,master IO压力很大,所以拿一部分slave也作为master。

    一个slave只能有一个master,一个master可以有多个slave。

    主从复制不会阻塞redis服务器,redis服务器在主从复制的同时仍可以处理客户端请求。

    主从复制的作用

    • 数据冗余(数据备份)
    • 读写分离:从slave读取数据、master负责数据的写操作,提高服务器性能
    • 负载均衡:多个从节点都负责读,可使用nginx进行读的负载均衡
    • 高可用:master出现问题,可使用一个slave作为master;部分slave出现问题,其它slave可用

    全量复制、偏移量

    slave第一次连接master后,会从master复制全部数据,称为全量复制。

    之后每次从master同步,都只复制偏移量(offset,距离上一次同步,期间做的修改)。如果偏移量复制失败,则尝试进行全量复制。

    当然,如果有需要,slave 在任何时候都可以发起全量同步。

    redis主从同步配置

    有2种方式:配置文件方式、命令方式。

    redis 5.0之后的版本用replicaof代替了slaveof,虽然在5.0中slaveof还能用(向下兼容),但早晚要被取消,尽量用replicaof。

    此处以5.0版本为例,若使用的是5.0之前的版本,把所有的replicaof都换成slaveof即可。

    要模拟的话,在VMware上克隆虚拟机,就有多个Linux了,不必修改使用的端口号。

    如果在一个虚拟机上模拟(使用多个redis服务器),将之前的redis复制多份,放到/usr/local/redis下,重命名为redis1、redis2....并修改redis.conf中的端口号、各种文件保存位置。

    如何查看redis的版本?

     cd到redis的bin目录,以下4句命令任选一句执行:

    ./redis-cli -v
    ./redsi-cli --version  #全称是2根-
    
    ./redis-server -v
    ./redis-server --version

    配置文件方式(推荐)

    修改redis.conf中的配置。

    1、master的配置

    replicaof、masterauth的配置要注释掉。

    master宕机后,把某个slave的replicaof配置注释掉,作为新的master,再把其它slave指向此节点。

    设置slave只读(读写分离)。

    其实这些都是默认值,看一下只是怕之前改过。

    看一下有没有设置密码。

    如果做了修改,需重启redis。

    2、slave的设置

    设置一下master的ip、port,如果master设置了密码,此处还需要写上master的密码。

    重启下redis生效。

    连上master,看下主从复制信息:

    info replication

    连接的slave的个数,各slave的ip、port、state、偏移量都可以看到。

    那个replid即replication id,每次复制完都会用replid打一个标记复制至此,距上一replid之间的内容就是偏移量(增量)。

    我们随便set一个键值对,比如set user hasagei

    连上slave,同样的方式看下:

    master的信息、本slave的信息都可以看到,包括slave是否只读、偏移量等等。

    有个参数是connected_slaves,是本节点的从节点个数(层叠,从节点也可以作为主节点),如果有,也会列出各从节点的信息。

    get一下刚才在master中设置的key,能获取到值;

    set一个键值对,报错,即只读。


    命令方式(了解即可)

    (1)连接到要做为主节点的redis服务器

    replicaof no one

    使之成为主节点

    config set replica-read-only yes

     设置slave只读

    也可以先查看,不符合要求再设置:

    config get replica-read-only

    (2)连接到要作为slave的redis服务器

    replicaof no one

    可能之前就是某个master的从属,先去掉杂七杂八的主人。

    replicaof 192.168.1.7 6379  #master的ip、port

    缺点:

    • 配置不是永久性的,只在本次连接期间有效,下次还需要配置,麻烦
    • 如果master设置了密码,则连不上

    也可以手动同步:

    sync  #马上执行主从同步
  • 相关阅读:
    移动端输入框的那些事
    HTML的各个标签的默认样式
    window.location.Reload()和window.location.href 区别
    JavaScript惰性函数定义
    JavaScript将具有父子关系的原始数据格式化成树形结构数据(id,pid)
    jQuery验证控件jquery.validate.js使用说明+中文API
    统计网页浏览次数
    vue 组件开发 props 验证
    vue过滤器在v2.0版本用法
    JQ中get()与eq()的区别
  • 原文地址:https://www.cnblogs.com/chy18883701161/p/11077566.html
Copyright © 2011-2022 走看看