Redis主从复制(七)

一、是什么

主机数据更新后根据配置和策略,自动同步到备机的 master/slaver 机制。Master以写为主,Slave以读为主。

二、能干嘛

  • 读写分离,性能扩展
  • 容灾快速恢复

一主多从

Redis主从复制(七)

三、怎么玩:主从复制

尝试搭建一个 一主两从

步骤:

  1. 创建 /myredis 文件夹

  2. 复制 redis.conf 配置文件到文件夹中

  3. 配置 一主两从 ,创建三个配置文件

    redis6379.conf
    redis6380.conf
    redis6381.conf
    
  4. 在三个配置文件中写入内容

    include /myredis/redis.conf
    pidfile /var/run/redis_6379.pid
    port 6379
    dbfilename dump6379.rdb
    

    Redis主从复制(七)

  5. 将三个redis服务全部启动

    Redis主从复制(七)

    Redis主从复制(七)

  6. 查看三台主机运行情况,三个都是主机,没有主从效果

    Redis主从复制(七)

  7. 配置从机

    # 成为某个实例的从服务器
    slaveof <ip> <port>
    slaveof 127.0.0.1 6379
    

    Redis主从复制(七)

  8. 测试 主从复制

    在主机中写操作,会自动复制一份到从机中去。

    Redis主从复制(七)

    在从机中写操作,报错了。从机中只能做读操作。

    Redis主从复制(七)

四、常用3招

4.1 一主二仆

4.1.1 假设从机宕机

开启三个服务 637963806381 ,设置6379为主机,另外两个为从机。

假设6381从机宕机,这时候,6379主机新增数据,看看会发生什么?

Redis主从复制(七)

Redis主从复制(七)

结论:

当从机挂掉了,再重新启动从机后,从机并不能加入到原先的主从关系中,需要重新手动加入。当重新加入后,它会把主机中的数据从头完整地复制一遍到从机。

4.1.2 假设主机宕机

开启三个服务 637963806381 ,设置6379为主机,另外两个为从机。

假设6379主机宕机,看看会发生什么?

Redis主从复制(七)

Redis主从复制(七)

4.1.3 主从复制原理

Redis主从复制(七)

4.2 薪火相传

一个主机只管理一个从机,其他小从机交给主机的直属从机管理。

Redis主从复制(七)

Redis主从复制(七)

附庸的附庸不是我的附庸

中途变更转向:会清除之前的数据,重新建立拷贝最新的

风险:一旦某个从机宕机了,后面的小从机都没办法备份主机的内容。

4.3 反客为主

当一个主机宕机后,后面的从机可以立刻晋升为主机,其后面的小从机不用做任何修改。

可是现在只能手动 slaveof no one 让从机晋升为主机。若要让从机在主机宕机后自动晋升为主机,需要“哨兵模式”。

Redis主从复制(七)

五、哨兵模式

5.1 是什么

“反客为主”的自动版,能够后台监控主机是否故障,如果主机故障了可以根据投票数自动将从机转为主机。

Redis主从复制(七)

5.2 怎么使用

步骤:

  1. 先调整为一主二仆模式

    Redis主从复制(七)

  2. 自定义的 /myredis 目录下新建 sentinel.conf 文件,名字绝对不能错误。

  3. 配置哨兵,填写内容

    # 其中 mymaster 是为监控对象起的服务器名称(外号),1 是至少有多少个哨兵同意切换
    sentinel monitor mymaster 127.0.0.1 6379 1
    
  4. 启动哨兵

    Redis主从复制(七)

  5. 当主机挂掉,从机选举中产生新的主机(要稍微等待一会儿,等待哨兵监测到,然后再次启动主机)

    Redis主从复制(七)

    Redis主从复制(七)

    Redis主从复制(七)

    Redis主从复制(七)

5.2.1 复制延时

由于所有的写操作都是先在 主机 上操作,然后同步更新到 从机 上,所以从 主机 同步到 从机 上有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,从机 数量的增加也会使这个问题更加严重。

5.3 故障恢复

Redis主从复制(七)

  • 优先级在 redis.conf 中默认:replica-priority 100,值越小优先级越高
在 vim 中,命令模式输入 ::set mu		开启行号

Redis主从复制(七)

  • 偏移量是指获得原主机数据最全的(从原主机那里获得了几个数据)
  • 每个reids实例启动后都会随机生成一个40位的 runid

5.4 主从复制Java中

连接池中修改部分内容。

参考资源:

上一篇:ARM系统时钟(S3C2440)


下一篇:C#PDF转图片,支持批量转,支持PDF文件,BASE64转换为图片文件,BASE64,支持合并PDF为一张图