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

Redis主从复制+哨兵模式_第1张图片

6、进行复制

127.0.0.1:6379> info replication
127.0.0.1:6380> info replication
127.0.0.1:6381> info replication

Redis主从复制+哨兵模式_第2张图片

这时你会发现,三台都是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命令效果一致。

Redis主从复制+哨兵模式_第3张图片

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主从复制+哨兵模式_第4张图片

哨兵模式配置

首先停止三台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

Redis主从复制+哨兵模式_第5张图片

验证哨兵

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

这时,哨兵就会介入,并进行选举,然后把选举成功的从面切换为主机。
Redis主从复制+哨兵模式_第6张图片

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

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

Redis主从复制+哨兵模式_第7张图片

你可能感兴趣的:(数据库,redis,数据库,缓存,linux)