• Redis系列七 主从复制(Master/Slave)


      主从复制(Master/Slave)

    1、是什么

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

    2、能干什么

      读写分离,容灾恢复。

    3、如何使用

      1、从库配置:slaveof 主库IP 主库端口

      2、修改配置文件

        拷贝多个redis.conf文件,文件名和每个Redis的序号一致,方便区分。

        开启daemonize yes。

        修改pid文件名字。文件名字用于区分是哪个Redis主机的进程。

        修改端口号。每个redis主机使用不同的端口号

        log文件名字。区分每个Redis主机的日志。

        dump.rdb名字。区分每个Redis主机的数据库文件。

    4、常用的三种方式

        一主二仆(一个主机 两个从机)

            一个Master两个Slave。查看当前主机是主机还是从机使用命令 info replication

        薪火相传(依次排开,既做下一个的主机也做上一个的从机,三台主机的话 中间的为上一台的从机下一台的主机)

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

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

            配置从机的命令为 slaveof 新主库IP 新主库端口

        反客为主(主机down掉后,从机升级为主机)

            在从机上配置 SLAVEOF no one 之后,从机就会变为主机 使当前数据库停止与其他数据库的同步,转成主数据库。

    4、复制原理

      Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步。

      全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。slave第一次同步为全量复制。

      增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步

      但是只要是重新连接master,第一次完全同步(全量复制)将被自动执行。

    5、哨兵模式(sentinel)

    • 哨兵模式为反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。
    • 自定义的/myredis目录下新建sentinel.conf文件,名字绝不能错。
    • 配置哨兵,填写内容在sentinel.conf文件中配置

        sentinel monitor 被监控数据库名字(自己起名字) 127.0.0.1 6379 1

        上面最后一个数字1,表示主机挂掉后salve投票看让谁接替成为主机,得票数多少后成为主机

    • 启动哨兵

        redis-sentinel /myredis/sentinel.conf (目录依照各自的实际情况配置,可能目录不同)

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

        不会造成双冲突,之前的master会成为slave.

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

        

    6、复制的缺点

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

    8、主要命令

      info replication 查看主从机状态

      slaveof 127.0.0.1 6379 在从机上配置,将6379作为主机

      主从复制的具体配置

    说明 例子使用6379、6380、6381三台Redis服务

      一、为每个Redis创建一个配置文件

        

    二、修改配置文件以6380为例

      1、配置pid、log文件、后台运行

        

      2、配置端口号

        

      3、配置数据库文件名

        

       4、配置aof(如果开启了aof则需要配置)

        

     三、启动三台Redis之后所产生的文件如下

      

      产生各自的rdb和aof文件

    四、主从模式配置

      1、一主二仆模式:一个主机两个从机,只在从机上配置即可,将6379作为主机,6380和6381作为从机。从机开启后第一次会从主机全量更新,以后每一次主机的写操作都会增量更新到从机。主机负责写,从机负责读,在从机上执行set key value 命令会失败。

        各个机器上执行info replication命令后都会显示如下

        默认情况下每台redis都是master角色。

      配置将6380和6379配置为从机

        

        

      查看6379状态:

        连接两个slaves 一个是6381 一个是6380

      查看6380状态

        看到6380的角色为slave,主机是127.0.0.1 端口是6379 主机连接状态是up。

      在6379上执行写操作  在6380和6381上执行读操作

        

        

        

        可以发现在master上执行写操作后,在slave上可以读到数据。

      2、薪火相传模式,将6379作为6380的主机,将6380作为6381的主机。

        查看6381

        可以看到6381是6380的从机

        查看6380

        可以看到6380的角色还是作为从机,不过可以到到它连接了一个salve 6381。

        在6379上写数据,在6380和6381上读数据

        

        

         可以看到两个slave上都可以读到master上的数据

      3、哨兵模式(sentinel)

         当master关闭后,会在salve中会自动选出一个master做为主机。

         编写sentinel.conf文件

         内容如下:

          sentinel monitor redis6379  127.0.0.1 6379 1

          监控redis6379主机

        现在redis配置文件目录为:

        

     启动配置文件

        

    停掉6379,看是否会自动在6380和6381中选出master

        

         

         可以看到6380成为了master

          

          可以看到日志输出,master从6379切换到了6380

        2017-06-10 00:40:38

        

      

  • 相关阅读:
    Redis源代码分析(十三)--- redis-benchmark性能測试
    kvm中运行kvm
    umount.nfs device busy day virsh extend diskSpace, attachDisk
    ultravnc
    openNebula dubug
    maintenance ShellScripts
    virsh VMI deploy data serial xml
    cloud computing platform,virtual authentication encryption
    基于C 的libvirt 接口调用
    storage theory
  • 原文地址:https://www.cnblogs.com/zhaobingqing/p/6974600.html
Copyright © 2020-2023  润新知