【Redis】——主从复制

1. 概念

主机数据更新后根据配置和策略,自动同步到备机的master/slaver 机制,Master以写为主,Slave以读为主。
在这里插入图片描述

2. 作用

<1>读写分离。性能扩展
<2>容灾快速恢复

3. 步骤

<1>创建/myredis 文件夹

在这里插入图片描述

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

在这里插入图片描述

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

redis6397.conf
redis6380.conf
redis6381.conf

<4>在配置文件中写入内容

引入主配置文件
修改pidi文件
设置端口号
修改持久化文件名
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

<5>启动三台redis服务器

在这里插入图片描述
在这里插入图片描述

<6>查看三台服务器运行情况

info replication
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

<7>配从(库)不配主(库)

slaveof
成为某个实例的从服务器
将6380 和6381 作为6379的从服务器
在这里插入图片描述
在这里插入图片描述
从服务器:
在这里插入图片描述
在这里插入图片描述
主服务器:
在这里插入图片描述

<8>主服务器可以写,可以读

在主服务器上写:
在这里插入图片描述
在从服务器上读取主服务器的数据:
在这里插入图片描述

<9>从服务器只能读,不能写

在这里插入图片描述

4. 常见问题

<1> 一主两仆

  1. 当从服务器宕机重启之后,默认不再是从服务器, 而是作为一个主服务器,需要重新设置为从服务器,并且重新设为从服务器之后,会自动复制主服务器的数据到从服务器。在这里插入图片描述
  2. 当主服务器宕机之后,从服务器依的设置不会改变,原地待命。主服务器重启之后,依旧能找到从服务器。

<2> 薪火相传

  1. 如果有一个主服务器,多个从服务器。进行链式同步。
    缺点是如果中间的服务器宕机,则后边的服务器接收不到同步数据

在这里插入图片描述
2. 演示
127.0.0.1 6379 作为主服务器
127.0.0.1 6380 作为6379的从服务器
127.0.0.1 6381 作为6380的从服务器
特点和一主二仆一样
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

<3> 反客为主

  1. 当一个master服务器宕机之后,slave服务器立即成为master ,其后面的slave不用做任何修改。

  2. 使用slaveof no one命令,则可以将从服务器变为主服务器
    在这里插入图片描述

  3. 自动检测,主服务器是否宕机,采用哨兵模式

5. 原理

  1. 当从服务器连接服务器之后,从服务器会向主服务器发送数据同步消息。
  2. 主服务器接到从服务器发送过来的同步请求,把主服务器数据进行持久化rdb文件,把rdb文件发送给从服务器。
  3. 每次主服务器每次进行写操作之后,和从服务器进行数据同步。
    在这里插入图片描述

6. 哨兵模式

<1>. 介绍

反客为主的自动版,能够后台监控主服务器是否故障,如果故障了根据投票数自动将从转换为主。
在这里插入图片描述

<2> 步骤

1. 设置主从服务器

127.0.0.1 6379 作为主服务器
127.0.0.1 6380 作为6379的从服务器
127.0.0.1 6381 作为6379的从服务器

2. sentinel.conf 配置文件

名字不能错
在/myredis下新建sentinel.conf配置文件

3. 配置哨兵,填写内容

sentinel monitor mymaster 127.0.0.1 6379 1
在这里插入图片描述

mymaster 为监控对象的服务器名字,1 为至少有多少个哨兵同意迁移的数量

4. 启动哨兵

执行 redis-sentinel /myredis/sentinel.conf
在这里插入图片描述

5. 当master服务器宕机,slave 服务器中选举产生新的主机

<1>大概10秒左右可以看到哨兵窗口日志,切换了主机
<2>选举优先级别 : slave-priority
<3>原主服务器重启后会变成从服务器

<3> 演示

第一步,将6379 shutdown
在这里插入图片描述
第二步:哨兵将打印信息 ,6379 宕机,将6380 作为新的主服务器
在这里插入图片描述
在这里插入图片描述
第三步:6379重新上线之后,会作为从服务器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

<4>复制延迟

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

<5> 故障恢复

在这里插入图片描述
优先级在redis.conf中默认:replice-priority 为100 ,值越小优先级越高
偏移量是指获取原主机数据最全的
每个redis实例启动后都会对其生成一个40位的runid

猜你喜欢

转载自blog.csdn.net/qq_42000631/article/details/122292830