redis主从复制&哨兵模式的搭建过程

前置工作

准备三个redis6379.conf、redis6380.conf、redis6381.conf,分别修改对应的三个地方,

  1. Pid文件名字
  2. 指定不同端口
  3. Dump.rdb名字
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

分别启动三个 redis

./redis-server /root/myredis/redis6379.conf
./redis-cli -h 127.0.0.1 -p 6379

./redis-server /root/myredis/redis6380.conf
./redis-cli -h 127.0.0.1 -p 6380

./redis-server /root/myredis/redis6381.conf
./redis-cli -h 127.0.0.1 -p 6381

在这里插入图片描述

配置主从复制

# 查看主从配置
info replication

可以看到三个 redis 都是"光杆司令",从机都为 0
在这里插入图片描述

# 配置主机命令
SLAVEOF 主库IP 主库端口
# 使当前数据库停止与其他数据库的同步,转成主数据库
SLAVEOF no one

把 6380 和 6381 的 redis 都配置为 6379 的从机,然后再通过 info replication 查看
可以看到配置成功了
在这里插入图片描述
Master以写为主,Slave以读为从

常见的几个问题

1、slave1、slave2是从头开始复制还是从切入点开始复制?比如从k4进来,那之前的123是否也可以复制?

2、2从机是否可以写?set可否?

3、主机shutdown后,从机是上位还是原地待命?

4、主机又回来了后,主机新增记录,从机还能否顺利复制?

5、其中一台从机down后情况如何?依照原有它能跟上大部队吗?

答案

  1. 当配置了主库后,从库的 key 会与主库的 key 同步,从库自己的 key 会被清除 从库变为主库后,从主库同步的 key 会保留
  2. 从机不可以进行 写操作,不管是从机的从机,只要是从机都不可以进行写操作
  3. 原地待命,并不会自动变为主机,主机挂不挂掉都一样
  4. 可以的
  5. 可以的

哨兵模式

解决的问题

当主库挂掉之后,通过哨兵自动检测到主机挂掉,然后把从机变为主机,从而解决主机挂掉后无法进行写操作的问题

配置步骤

新建 sentinel.conf 文件,名字绝不能错

# 文件配置内容:sentinel monitor 被监控主机名字(自己随便起) 127.0.0.1 6379 1
# 例:
sentinel monitor myhost6379  127.0.0.1 6379 1
# 可以一个哨兵监控多个master主机
# 也可以多个哨兵监控一个master主机(sentinel集群)

在这里插入图片描述
上面最后一个数字1,表示主机挂掉后salve投票(每个从机有一票,一种算法)看让谁接替成为主机,达到指定票数后成为主机,尽量写1,可以减少从机上位的时间

# 启动哨兵
 ./redis-sentinel /root/master-slaver/sentinel.conf 

在这里插入图片描述
现在把 master 挂掉,等待半分钟左右在这个窗口可以看到日志文件
在这里插入图片描述
可以看到6380变成了主机,从而实现了当主机挂掉,从机自动顶上来
在这里插入图片描述

问题

如果之前的 master 重启回来,会不会双master冲突?
答案:不会的,之前的master重启后会变为从机

在上面的基础上再启动之前的master,看会不会变成主机,还是变成从机?
可以看到之前的master重启后会变为从机
在这里插入图片描述

复制的原理

Slave启动成功连接到master后会发送一个sync命令,Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令, 在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步
全量复制:在第一次slaveof的时候进行,把主库的所有key复制到从库中
增量复制:Master 进行写操作时会将修改命令依次传给slave,完成同步,不会全部复制
只要是重新连接master,一次完全同步(全量复制)就会被自动执行一次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值