应用程序对服务器大量的读写,服务器很可能会宕机,导致数据丢失。为了解决这一问题就有了主从复制。

作用:

  1:防止数据丢失

  2:提高系统的吞吐量

主从复制:从服务器复制主服务器中的数据。

读写分离:应用程序在主服务器写,在从服务器读。

配置:

  1:手动

  2:哨兵模式

手动:一主二仆(一种说法,可以有多个仆),星火相传(一个主服务器可以传到另一个服务器,另一个服务器可以传到别的服务器),反客为主(操作,从节点变为主节点)

我自己在根目录创建一个app文件夹,里面有redis,又新建了一个rediscluster文件,在rediscluster下创建了3个文件夹node1,node2,node3

①:准备多台服务器(用三个不同的redis服务进程模拟三个机器,指定不同的配置文件)

  创建三个文件夹(node1,node2,node3),把redis.conf拷贝到三个文件夹下

②:修改各个文件夹下redis.conf文件

    修改内容:

      端口号(port)

      守护进程(daemonize 改为yes,默认为no)

      进程文件(pidfile)  /app/rediscluster/node1/redis.pid 

      日志文件(logfile)/app/rediscluster/node1/redis.log

      dir   /app/rediscluster/node1/

  

      这里启动多个redis命令:

         cd /app/rediscluster

         redis-server node1/redis.conf

    启动redis-cli -h -p

       -h 机器名(本地:127.0.0.1)

       -p 端口号

       redis-cli -p 7777(7777是我设置的redis端口号)

 

     查看reids进程

      ps -ef | grep redis

    目前,这3个redis没有任何联系

 配置主从(2种,配从不配主,从节点只能读,主节点能读能写):node1:端口号:6666 node2:端口号:7777 node3:端口号:8888

查看配置:info replication

方法一:用命令配置

  在从节点上面执行  slaveof host port

方法二:修改配置文件

  在redis.conf中,找到slaveof(默认是注释的,把注释删掉)

    slaveof 127.0.0.1 port(父节点的端口号)

复制原理:

  1. Slave启动成功连接到master;
  2. slave向master会发送一个sync命令;
  3. Master接到命令后执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;
  4. 主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;
  5. 从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;
  6. 主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;
  7. 从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;

 

    

posted on 2018-09-21 20:22  聂鑫磊  阅读(370)  评论(0编辑  收藏  举报