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

    1、主从复制

    简述:主从复制就是主机数据更新后根据配置和策略,自动同步到备份机的 master/slave 机制,mater 以写为主,而 slave 以读为主。主要用于读写分离,分离读写压力,容灾快速恢复。

    一主二仆配置例子:以下例子为在一台机器开三个 redis server,多台机器其实也是相似的配置,配置是配从不配主,配置文件需要改动的地方如下

    1)首先保留原始的 redis.conf 

    2)新建 redis6379.conf、redis6380.conf、redis6381.conf

    3) 文件内容如下,只展示其中一个这,里没有配 log 是因为用不到 log,如果有需求则自己配(注意三个文件的区别只是端口号不同,include 的内容是原始配置文件的路径)

    4)分别使用三个配置文件 redis-server <xxx.conf> 开启三个不同的 redis 服务端

    5)开三个终端窗口分别使用 redis-cli -p <port> 命令来开启三个服务端对应的客户端

    6)使用命令 info replication 查看当前服务器主从状态,当然现在没有设置主从之前都会是 master

    7) 使用命令 slaveof <ip> <port> 来配置当前服务器为某个服务器的从服务器,在当前例子中,我们将 6380 和 6381 作为 6379 的从服务器。然后查看主机状态如下

    上述的主从配置有如下特点:

    • 如果 master 本身就有数据,那么 slave 在接入后会继承原本 master 的数据,并且同步复制主服务器的状态,使得主从状态一致
    • slave 机器不能执行写操作,例如 set 操作
    • 主机 shutdown 之后,slave处于原地待命状态,而非上位
    • 如果 slave 挂了之后,重启之后是不能恢复到原来的主从状态的,除非在从服务器的配置文件中已经写明了 slaveof 的配置信息

    复制的原理:

    2、链条模式

     

    注意:无论你怎么拆怎么接,所有从都会与当前的 master 数据状态一致,例如你先拆开上图的第一条链,然后将第二台主机反客为主执行 slaveof no one,这个时候执行一些新的写操作,然后再将第二台机执行 slaveof 变为第一台机的从,那么刚刚那些新的写操作都会无效,反正状态都和主一致,可以自己实验一下。

    3、哨兵模式

    哨兵配置例子:

    1)首先将当前所有服务器调整为一主多仆的形式(此例子为上面一主二仆的状态)

    2)在配置文件放置的文件夹下创建哨兵的配置文件夹 sentinel.conf 内容为

    sentinel monitor <name> <host> <port> <number>

    name 为为监控对象起的服务器名称,这个名字随便起都可以

    host、port 为被监视服务器的地址和端口

    number 为当前被监视对象被多少个哨兵同意为 down 掉才能进行真正的迁移

    例子的话配置就如下了

    3)执行启动哨兵命令为 redis-sentinel <xxx.conf>

    4)此时把 master 主机 shutdown 掉,等待一阵子(这个会有缓冲时间)查看哨兵窗口,可以看到已经切换了 master

    故障切换规则:

  • 相关阅读:
    Linux 文件查询
    Linux 文件与目录的权限
    Linux查看文件内容
    Linux文件与目录管理
    Linux的文件权限
    java 源码编译
    jvm 字节码执行 (二)动态类型支持与基于栈的字节码解释执行
    jvm 字节码执行 (一)方法调用
    玩转mongodb(七):索引,速度的引领(全文索引、地理空间索引)
    玩转mongodb(六):索引,速度的引领(普通索引篇)
  • 原文地址:https://www.cnblogs.com/qwertiLH/p/12764069.html
Copyright © 2011-2022 走看看