###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集群中从来都是配从不配主
配置成功后
在主机中使用写的命令,从机中可以查询,但是如果在从机写,就会报错,
–主机只负责写,从机负责查
一主二仆
当一个从服务器挂掉之后,重启之后的状态是主服务器的状态,需要重新注册到主服务器,数据是从头开始复制,相当于,重新复制了一遍,
当大哥挂了,小弟不会上位,小弟永远认这个大哥,
薪火相传
大哥永远是大哥,小弟也会有小弟,小弟挂了下面的小弟就全挂了,大哥无法跨级
反客为主
大哥挂了,小弟上位,
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
当主机挂掉之后,从机选举新的主机
(大概10秒左右可以看到哨兵窗口日志,切换了新的主机)
哪个从机会被选举为主机呢?根据优先级别:**slave-priority**
原主机重启后会变为从机。
理解哨兵
新皇登基之后,老皇帝会被拉下马,不能作皇帝了,变成从机
选举规则
优先级在redis.conf中默认:slave-priority 100,值越小优先级越高
新版本的是:==replica-priortity 100==
偏移量是指获得原主机数据最全的
每个redis实例启动后都会随机生成一个40位的runi
复制延时
由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。