Redis主从模式与哨兵模式介绍

本文介绍了Redis主从复制的工作原理,包括RDB和PSYNC功能,以及如何在实践中配置和管理主从关系。此外,还深入讲解了Redis哨兵模式,涉及监控、故障切换和自动恢复机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Redis主从模式与哨兵模式

一、Redis(Master-Replicaset)主从复制

1.原理

1)画图说明

在这里插入图片描述

2)文字说明
1. 副本库通过slaveof 10.0.0.51 6379命令,连接主库,并发送SYNC给主库 
2. 主库收到SYNC,会立即触发BGSAVE,后台保存RDB,发送给副本库
3. 副本库接收后会应用RDB快照
4. 主库会陆续将中间产生的新的操作,保存并发送给副本库
5. 到此,我们主复制集就正常工作了
6. 再此以后,主库只要发生新的操作,都会以命令传播的形式自动发送给副本库.
7. 所有复制相关信息,从info信息中都可以查到.即使重启任何节点,他的主从关系依然都在.

2.8版本以后有了PSYNC功能:
8. 如果发生主从关系断开时,从库数据没有任何损坏,在下次重连之后,从库发送PSYNC给主库
9. 主库只会将从库缺失部分的数据同步给从库应用,达到快速恢复主从的目的

2.主从数据一致性保证

min-slaves-to-write 1       # 必须保证有1个从库写入
min-slaves-max-lag  3       # 从库的延时时间不能超过3

3.主库是否要开启持久化?

如果不开有可能,主库重启操作,造成所有主从数据丢失!

二、主从复制实现

1.环境准备

准备两个或两个以上redis实例
mkdir /data/638{0..2}

主节点:6380
从节点:6381、6382

2.编辑配置文件

cat >> /data/6380/redis.conf <<EOF
port 6380
daemonize yes
pidfile /data/6380/redis.pid
loglevel notice
logfile "/data/6380/redis.log"
dbfilename dump.rdb
dir /data/6380
requirepass 123
masterauth 123
EOF

cat >>   /data/6381/redis.conf <<EOF
port 6381
daemonize yes
pidfile /data/6381/redis.pid
loglevel notice
logfile "/data/6381/redis.log"
dbfilename dump.rdb
dir /data/6381
requirepass 123
masterauth 123
EOF

cat >>   /data/6382/redis.conf <<EOF
port 6382
daemonize yes
pidfile /data/6382/redis.pid
loglevel notice
logfile "/data/6382/redis.log"
dbfilename dump.rdb
dir /data/6382
requirepass 123
masterauth 123
EOF

3.启动

redis-server /data/6380/redis.conf
redis-server /data/6381/redis.conf
redis-server /data/6382/redis.conf

4.开启主从

6381/6382命令行:

redis-cli -p 6381 -a 123 SLAVEOF 127.0.0.1 6380
redis-cli -p 6382 -a 123 SLAVEOF 127.0.0.1 6380

5.查询主从状态

redis-cli -p 6380 -a 123 info replication
redis-cli -p 6381 -a 123 info replication
redis-cli -p 6382 -a 123 info replication

6.解除主从

redis-cli -p 6381 -a 123 SLAVEOF no one

三、Redis哨兵模式 — redis-sentinel(哨兵)

1.画图说明

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pwJ4umlN-1619094453560)(C:\Users\86150\Desktop\数据库\img\image-20210422170834723.png)]

2.文字说明

1、监控
2、自动选主,切换(6381 slaveof no one)
32号从库(6382)指向新主库(63814、应用透明 
5、自动处理故障节点

3.sentinel搭建过程

1)创建目录
mkdir /data/26380
cd /data/26380
2)编辑配置文件
vim sentinel.conf
port 26380
dir "/data/26380"
sentinel monitor mymaster 127.0.0.1 6380 1
sentinel down-after-milliseconds mymaster 5000
sentinel auth-pass mymaster 123 
3)启动
启动:
[root@db01 26380]# redis-sentinel /data/26380/sentinel.conf  &>/tmp/sentinel.log &
4)问题解决
如果有问题:
1、重新准备1主2从环境
2、kill掉sentinel进程
3、删除sentinel目录下的所有文件
4、重新搭建sentinel
5)停主库测试
redis-cli -p 6380 shutdown
redis-cli -p 6381
info replication
6)启动源主库(6380),看状态。
Sentinel管理命令:
redis-cli -p 26380
PING :返回 PONG 。
SENTINEL masters :列出所有被监视的主服务器
SENTINEL slaves <master name> 

SENTINEL get-master-addr-by-name <master name> : 返回给定名字的主服务器的 IP 地址和端口号。 
SENTINEL reset <pattern> : 重置所有名字和给定模式 pattern 相匹配的主服务器。 
SENTINEL failover <master name> : 当主服务器失效时, 在不询问其他 Sentinel 意见的情况下, 强制开始一次自动故障迁移。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值