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 使用grep过滤多个条件及grep常用过滤命令
    看Linux0.11源码分析书籍,补充知识
    调用门描述符格式
    可能用到的一些寄存器
    002. Linux0.00 head.s注释
    linux0.00 的Makefile
    [转载] Bochs 常用的调试指令
    001. 注释过的boot.s
    PHP接口编程——调用第三方接口获取天气
    phpstudy中让ThinkPHP5访问去除/public/index.php
  • 原文地址:https://www.cnblogs.com/qwertiLH/p/12764069.html
Copyright © 2011-2022 走看看