Redis配置单机版主从复制(一主两从)

544 阅读3分钟

Redis配置单机版主从复制(一主两从)

  1. 为方便配置,专门创建一个文件夹myredis来配置环境 bjgw9A.png
  2. 进入myredis文件夹,并复制redis.conf文件到myredis中 bj2mKP.png
  3. 配置一主两从,创建三个配置文件,文件名分别为:redis6379.conf、redis6380.conf、redis6381.conf
  4. 然后在三个配置文件中写入内容: 首先将redis.conf中的appendonly yes改为no,然后在三个配置文件中分别写入以下内容:

bjRZi4.png

bjRWyq.png

bjRBef.png

最终文件分布情况如下:

bjWQpj.png

  1. 然后查看当前reids是否启动,若启动则先关闭redis服务 bjfcMn.png 然后使用命令redis-server redis6379.conf/redis6380.conf/redis6381.conf启动redis,如果出现以下结果则说明启动成功 bjoR4f.png 注意:此时还没配置完成

  2. 使用redis-cli -p 6379(6380/6381)连接这三个端口下的redis bvVu9K.png bvVU9f.png bvVrHs.png

  3. 在redis中使用info replication命令查看信息,发现三个端口下的redis的角色都是master。 bvZC5t.png bvZk28.png bvZnVs.png

  4. 将其中两个变为从库(这里配置6379为主库,6380、6381为从库)。在从机上执行命令slaveof ip(主机IP) port(主机端口) 即在6380和6381上执行 slaveof 127.0.0.1 6379 bvDrqg.png bvD6aj.png

此时:主从复制搭建完成

  • 测试 在6379中添加一个key-value,看看能否在6380和6381端口读取到 bvrJyT.png

bvrUw4.png

bvr0YR.png

  1. 发现,主机插入redis数据后,两个从机都能读取到主机中的数据。但是,从机不能插入数据 bvsPnU.png

注意:若主机挂掉,则重启就行,从机的role还是slave(从机不会上升为主机,但如果想要上升为master,可以使用命令 slave no one,这种方式需要手动完成,而哨兵模式是其对应的自动版),。但是如果从机挂掉,重启后会其role会自动变为master因此需要重设:slave 127.0.0.1 6379,才能变成6379的从机


主从复制原理

  1. 当从服务器连接上主服务器后,从服务器--->主服务器发生进行数据同步的消息
  2. 主服务器接到从服务器发送过来同步消息,把主服务器数据进行持久化放到rdb文件中。然后主服务器将rdb文件发送给从服务器,从服务器接收到rdb文件后进行对RDB文件进行解析和读取
  3. 每次主服务器进行写操作后,都会和从服务器进行数据同步

哨兵模式

简述

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

实现方法

  • 在myredis目录下新建sentinel.conf文件(注意:文件名不能错)然后再文件中添加sentinel monitor mymaster 127.0.0.1 6379 1 bvTRHA.png
  • 使用命令redis-sentinel sentinel.conf开启哨兵模式 bxr4Gn.png 可以更改redis6380(6381).conf中的配置slave-priority 100来更改优先级,其中数字(比如100)越小优先级更高.当优先级相同时,偏移量(偏移量指获得主服务器数据最全的从服务器)大的优先级高,当偏移量也相同时,选择runnid(redis每次启动都会随机生成一个40位的runnid)最小的从服务 参考:redis入门到精通