• Redis集群


    Redis集群

    Redis的复制(Master/Slave)

    介绍

    也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Salve已读为主。

    作用

    主从备份:防止主机宕机

    读写分离:分担master的任务

    任务分离:如从服分别分担备份工作与计算工作

    容灾恢复:灾难恢复指的是在灾难发生后,将系统恢复到正常运作的能力。

    1.一主多仆

    2.薪火相传

    3.反客为主

    4.哨兵模式(sentinel)

    5.复制原理

    6.复制的缺点

    准备工作:

    我们将在一个机器上运行三个reids服务(进程)模拟三台redis主机。

    1.我们在与bin目录同级下创建目录myredis,将redis.conf拷贝一份到myredis下。

    2.拷贝多个redis.conf文件

    cp redis.conf redis1.conf
    cp redis.conf redis2.conf
    cp redis.conf redis3.conf
    注意:这样myredis目录就有四个配置文件:redis.conf、redis1.conf、redis2.conf、redis3.conf

    3.配置redis1.conf、redis2,conf、redis3.conf

    Redis1:
    开启daemonize yes:daemonize yes
    pid文件名字:Pidfile /var/run/redis1.pid
    指定端口:port 6379
    Log文件名字:Logfile “redis1.log”
    Dump.rdb名字:dbfilename dump1.rdb
    Redis2:
    开启daemonize yes:daemonize yes
    pid文件名字:Pidfile /var/run/redis2.pid
    指定端口:port 6380
    Log文件名字:Logfile “redis2.log”
    Dump.rdb名字:dbfilename dump2.rdb
    Redis3:
    开启daemonize yes:daemonize yes
    pid文件名字:Pidfile /var/run/redis3.pid
    指定端口:port 6381
    Log文件名字:Logfile “redis3.log”
    Dump.rdb名字:dbfilename dump3.rdb

    四个注意点:

    1.配主不配从:如果选择redis1作为主机,则redis2、redis3需要设置命令,主机不需要。

    2.从库配置命令:从机要跟从主机,命令:SLAVEOF 主库IP 主库端口。

    3.每次与master断开之后,主从关系断开,从机需要重新连接,除非你配置进redis.conf文件。

    4.info replication:查看redis角色。

    一主多仆

      一个主机多个从机。

     注意:79端口上的为主机,80、81为从机。

    终端1
    redis-server redis1.conf
    redis-cli -p 6379
    info replication
    终端2
    redis-server redis2.conf
    redis-cli -p 6380
    SLAVEOF 127.0.0.1 6379
    info replication
    终端3
    redis-server redis2.conf
    redis-cli -p 6381
    SLAVEOF 127.0.0.1 6379
    info replication

     主从复制

       从机会同步主机操作,甚至同步之前主机的操作。

     

    读写分离

      只有主机可以写,从机只能读。

     

    主机宕机

       主机宕机后,从机原地待命,如果主机恢复,则继续干活。

     

    从机宕机

       从机宕机后,再次启动就会是主机角色,所以需要连接原本的主机。

     

    薪火相传

      上一个Salve可以是下一个SlaveMasterSlave同样可以接收其他slaves的连接和同步请求,那么该slave作为链条中下一个Maste,可以有效减轻master的写压力。

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

    这里:

    80:

    SLAVEOF 127.0.0.1 6379

    81:

    SLAVEOF 127.0.0.1 6380

     

    注意:在这里80是79的从机,又是81的主机,所以它到底是什么角色呢?

    上面显示了连接的主机

    下面显示了连接的从机

     反客为主

       刚才上面主机宕机时,从机原地待命不动,在实际中当然不能这样做,我们要在从机中选择一个做主机。

    这里还是以79宕机为背景,以下是配置。

    80:

    SLAVEOF no one:使当前数据库停止与其他数据库的同步,转为主数据库

    81:

    SLAVEOF 127.0.0.1 6380

    哨兵模式(sentinel)

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

    1. 恢复一主二仆(79master8081salve
    2. 自定义的/myredis目录下新建sentinel.conf文件,名字绝不能错:touch sentinel.conf
    3. 配置哨兵,填写内容:sentinel monitor 被监控主数据库名字(自己起名字) 127.0.0.1 6379 1        注:上面最后一个数字1,表示主机挂掉后salve投票看让谁接替成为主机,得票数多
    4. 启动哨兵:
    redis-sentinel /myredis/sentinel.conf

      注:上述目录按照各自的实际情况配置,可能目录不同

        5.正常主从演

        6.原有的master挂了

     7.投票新选(redis帮你完成)

     8.重新主从继续开工,info replication查查看

     

    问题:如果之前的master重启回来,会不会双master冲突?

    不会,它的身份会变成从机,服从现有的主机。

    练习

    一组sentinel能同时监控多个Master。

    复制的缺点

    由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会是这个问题更加严重。
  • 相关阅读:
    常用查找算法总结
    cout<<endl 本质探索
    C语言字符串操作函数实现
    Shell编程实例
    Linux搭建SVN服务器
    Linux下搭建gtk+2.0开发环境
    Cairo编程
    DirectFB编程
    Ubuntu安装与配置
    Android学习之仿QQ側滑功能的实现
  • 原文地址:https://www.cnblogs.com/-wenli/p/10940841.html
Copyright © 2020-2023  润新知