redis主从复制(读写分离,容灾恢复),哨兵模式

Redis_主从复制:主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制Master(主服务器)以写为主,Slave(从服务器)以读为主

作用:读写分离,性能扩展,容灾快速恢复

 

复制原理:

 

 

 

使用

(主要)

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

创建文件夹

mkdir /myredis

cd /myredis

复制一个原始redis.conf

cp /etc/redis.conf /myredis/redis.conf

编写主从机的redis.conf

vi redis6379.conf

 

#引用原redis.conf
include /myredis/redis.conf
#Pid文件名字pidfile(后台运行时写入pid的文件)
pidfile /var/run/redis_6391.pid
#开启daemonize yes(守护线程 即后台运行)
daemonize yes
#dump.rdb名字dbfilename
dbfilename dump6391.rdb
#30秒中有5个key修改了就进行持久化
save 30 5
#设置自己redis的密码
requirepass Atcomsn1314
#给从机设置主机的密码
masterauth Atcomsn1314
#指定端口port
port 6391

 

 

 

(次要)

#Appendonly 关掉或者换名字

 appendfilename appendonly6379.aof

#Log文件名字

logfile /tmp/redis6379.log

 

例子:

一主二仆:

 

 

编写1主2从(启用了RDB持久化)

vi /myredis/redis6379.conf

内容

include /myredis/redis.conf

pidfile /var/run/redis_6379.pid

port 6379

requirepass 123456

masterauth 123456

dbfilename dump6379.rdb

接着编译另外2个

 

在myredis文件夹中启动redis服务

redis-server /myredis/redis6379.conf
redis-server /myredis/redis6380.conf
redis-server /myredis/redis6381.conf

进入redis-cli(三个Linux界面分别进入)

redis-cli -p 6379

redis-cli -p 6380

redis-cli -p 6381

 

在从机上执行    配置为从机(127.0.0.1:主机ip   6379:主机端口)(从机挂掉了重启需要重新配置从机         可以将配置增加到redis.conf文件中,永久成为从机生效。)

slaveof 127.0.0.1 6379

在主机上查看主从(master-slave)复制信息

info replication

在从机上查看主从复制信息

 

 

 

 

 

薪火相传:

上一个Slave可以是下一个slave的Master,Slave同样可以接收其他 slaves的连接和同步请求,

那么该slave作为了链条中下一个的master, 可以有效减轻master的写压力,去中心化降低风险

风险是一旦某个slave宕机,后面的slave都没法备份

主机挂了,从机还是从机,无法写数据了

 

 

反客为主:(可以使用哨兵模式自动实现)

当一个master宕机后,后面的slave可以立刻升为master,其后面的slave不用做任何修改。

在从机的redis-cli中使用  slaveof  no one  将从机变为主机

 

 

 

 

哨兵模式(主机挂掉,从机自动变主机)

 

 

 

 

redis从机变主机的选择条件:(优先级最高,偏移量最大,runid最小

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

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

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

 

 

在主从redis配置文件夹下创建sentinel.conf

cd /myredis

vi sentinel.conf

 

编写内容(mymaster :监控对象起的主服务器名称   1 :至少有1个同意迁移的哨兵数量)

sentinel monitor mymaster 127.0.0.1 6379 1

 

设置密码(master和slave的密码必须设置相同。)

sentinel auth-pass mymaster 123456

 按esc     wq保存

 

启动哨兵

redis-sentinel /myredis/sentinel.conf 

 

 

 

启动后应该会有下面一段

 

 

posted @ 2021-08-08 20:55  低调的。。。  阅读(426)  评论(0编辑  收藏  举报