2、redis主从复制与哨兵

迷人的老约翰 2021-08-03 12:16:15 18711 1 1 0

###redis主从复制
主从复制-master/slave

主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,master以写为主,slave以读为主

配置集群也都是多个一主多从

能干什么

1、读写分离

2、容灾恢复

怎么玩:

配置从(库)不配置主(库)

​ 拜个大哥

从库配置:slaveof 主库 ip 主库端口

​ 每次与master断开之后,都需要重新连接,除非配置进redis.conf文件,否则就配进配置文件,每次启动都读

修改配置文件细节操作

​ 1、拷贝多个redis.conf文件

​ 拷贝多个redis.conf文件include(写绝对路径) 拷贝配置文件

​ 2、开启多个daemonize yes

​ 3、pid文件名称 pidfile

​ 4、指定端口

​ 5、log文件名字

​ 6、dump.rdp名字

​ 7、Appendonly 关掉或者换名字

新建redis6379.conf,填写以下内容

include /myredis/redis.conf

pidfile /var/run/redis_6379.pid

port 6379

dbfilename dump6379.rdb
redis-server #配置名称		#启动redis
info replication
#打印主从复制的相关信息

redis -cli 6379/6380/6381	#启动多个redis客户端
slaveof  <ip><port>
#将自己注册给主机
#slaveof 127.0.0.1 6379

#使用命令查看主机配置
info replication

在redis集群中从来都是配从不配主

配置成功后
图片alt

在主机中使用写的命令,从机中可以查询,但是如果在从机写,就会报错,
–主机只负责写,从机负责查
图片alt

常用三招

一主二仆

​ 当一个从服务器挂掉之后,重启之后的状态是主服务器的状态,需要重新注册到主服务器,数据是从头开始复制,相当于,重新复制了一遍,

​ 当大哥挂了,小弟不会上位,小弟永远认这个大哥,

薪火相传

​ 大哥永远是大哥,小弟也会有小弟,小弟挂了下面的小弟就全挂了,大哥无法跨级

反客为主

​ 大哥挂了,小弟上位,

​ slaveof no one

####原理:

1、当从链接上主服务器之后,从服务器向主服务器发送进行数据同步消息

2、主服务器接到从服务器发送过来的同步消息,把主服务器数据进行持久化,rdb文件

把rdb文件发送从服务器,从服务器拿到rdb进行读取

3、每次主服务器进行写操作之后,和从服务器进行数据同步,都是主服务器发起的,相当于全量复制,增量复制

哨兵模式

是什么:

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

怎么用:
自定义的/myredis目录下新建sentinel.conf文件,名字绝不能错

sentinel monitor mymaster 127.0.0.1 6379 1
#其中mymaster为监控对象起的服务器名称, 1 为至少有多少个哨兵同意迁移的数量
/usr/local/bin

#redis做压测可以用自带的redis-benchmark工具

#执行redis-sentinel  /myredis/sentinel.conf 

图片alt

当主机挂掉之后,从机选举新的主机

(大概10秒左右可以看到哨兵窗口日志,切换了新的主机)

哪个从机会被选举为主机呢?根据优先级别:**slave-priority**

原主机重启后会变为从机。

理解哨兵

新皇登基之后,老皇帝会被拉下马,不能作皇帝了,变成从机

选举规则
图片alt

优先级在redis.conf中默认:slave-priority 100,值越小优先级越高

新版本的是:==replica-priortity 100==

偏移量是指获得原主机数据最全的

每个redis实例启动后都会随机生成一个40位的runi

复制延时

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