Redis主从复制+哨兵模式

Redis主从复制

**Tips:**准备三台虚拟机,配置好主机名、IP地址和redis环境。为了演示方便,利用多个实列的方式在一台主机上运行。

环境准备

配置多个实列
cp /opt/software/redis-7.0.4/redis.conf /etc/redis.conf
cp /opt/software/redis-7.0.4/redis.conf /etc/redis2.conf
vim /etc/redis.conf
#添加以下端口
	port 6380
vim /etc/redis.conf
	port 6381
#根据不同的配置文件启动redis-server
启动服务
redis-server /etc/redis.conf
redis-server /etc/redis2.conf
查看服务进程
ps -ef | grep redis
#出现7379、6380、6381三个进程即配置成功

主从复制步骤

1、创建目录
mkdir /rediscluster
2、复制配置文件
cp /etc/redis.conf  /rediscluster/redis.conf
Tips: 为了演示方便,把redis.conf中的appendonly no,即关闭AOF
3、创建三个文件
[root@serverb rediscluster]# vim redis-6379.conf
include /rediscluster/redis.conf
# 修改端口号
port 6379
# 修改pid文件名
pidfile "/var/run/redis_6379.pid"
# 修改持久化文件名
dbfilename "dump_6379.rdb"
dir "/rediscluster"

[root@serverb rediscluster]# vim redis-6380.conf
include /rediscluster/redis.conf
# 修改端口号
port 6380
# 修改pid文件名
pidfile "/var/run/redis_6380.pid"
# 修改持久化文件名
dbfilename "dump_6380.rdb"
dir "/rediscluster"

[root@serverb rediscluster]# vim redis-6381.conf
include /rediscluster/redis.conf
# 修改端口号
port 6381
# 修改pid文件名
pidfile "/var/run/redis_6381.pid"
# 修改持久化文件名
dbfilename "dump_6381.rdb"
dir "/rediscluster"
4、启动服务
[root@serverb rediscluster]# redis-server redis-6379.conf
[root@serverb rediscluster]# redis-server redis-6380.conf
[root@serverb rediscluster]# redis-server redis-6381.conf
5、连接服务
[root@serverb rediscluster]# redis-cli -p 6379
[root@serverb rediscluster]# redis-cli -p 6380
[root@serverb rediscluster]# redis-cli -p 6381

在这里插入图片描述

6、进行复制
127.0.0.1:6379> info replication
127.0.0.1:6380> info replication
127.0.0.1:6381> info replication

在这里插入图片描述

这时你会发现,三台都是master,也就是都是服务器。

7、配置主从

假设我们希望 6379 是主服务器,而 6380 和 6381 是从服务器,则需要做如下配置。
命令格式:replicaof

注意:此命令代表我要做谁的从服务器

我们分别在 6380 和 6381 客户端中执行如下命令:

127.0.0.1:6380> slaveof 127.0.0.1 6379    
OK
127.0.0.1:6381> slaveof 127.0.0.1 6379
OK

注意:

  1. 在 redis-cli 客户端中执行 replicaof 命令只会对当前环境生效,重启后失效。要想永 久生效,需要在 redis.conf 配置文件中添加 replicaof 配置。
  2. 在 Redis 5.0 后,新增了 replicaof 命令,作用与 slaveof命令效果一致。

在这里插入图片描述

8、集群测试
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK

测试
127.0.0.1:6380> get k1
1) "v1"
127.0.0.1:6381> get k1
1) "v1"

注意:

  1. 如果我们在从服务器中添加数据,则会报错。因为从服务器只能读。
  2. 如果从机宕机了,重启后会变为主服务器,需要重新执行 slaveof 命令。

主从切换

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

用 slaveof no one 将从机变为主机。

假设主机 6379 宕机了,我们可以在 6380 上执行如下命令来切换为主机:

127.0.0.1:6380> slaveof no one

查看6380,已经变为主机了。

哨兵模式

什么是哨兵模式

哨兵也叫 sentinel,它的作用是能够在后台监控主机是否故障,如果故障了根据投票数自动将 从库转换为主库。

在这里插入图片描述

哨兵模式配置

首先停止三台redis服务

redis-cli shutdown

然后再重新启动三台 Redis 服务器,并实现一主双从。

最后在 /rediscluster 目录下新建 sentinel.conf 文件,文件名称不能写错,必须叫这个名 称。

[root@serverb rediscluster]# vim sentinel.conf
sentinel monitor redismaster 127.0.0.1 6379 1

参数说明:
	monitor:监控
	redismaster:为监控对象起的服务名称
	1:代表至少有多个哨兵同意迁移的数量
启动哨兵
[root@serverb rediscluster]# redis-sentinel sentinel.conf

在这里插入图片描述

验证哨兵
[root@serverb rediscluster]# redis-cli -p 6379
127.0.0.1:6379> shutdown

这时,哨兵就会介入,并进行选举,然后把选举成功的从面切换为主机。
在这里插入图片描述

如果我们把 6379 重新启动,则它会变为从机。

[root@serverb rediscluster]# redis-server /rediscluster/redis-6739.conf
[root@serverb rediscluster]# redis-cli -p 6379
127.0.0.1:6379> info replication

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值