redis简单搭建主从复制

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_30160727/article/details/84799012

本次主要搭建redis复制模式,这里共两台虚拟机,搭建一主二从复制模式。上一篇redis在CentOS安装已经介绍过redis如何安装的,这里不再赘述。注意:本文并没有加入哨兵
节点安排:
(1)master1:192.168.121.140:6381
(2)master2:192.168.121.140:6382(备用)
(2)slave1:192.168.121.139:6379
(3)slave2:192.168.121.139:6380
本文主要研究以下问题:
(1)当salve没有和master建立关系之前,master首先set部分数据,再其建立关系后,master之前set的数据会不会同步到两个slave节点?
(2)当两个slave节点之一挂掉,然后再次重启,查看redis节点的role是什么?
(3)当master节点挂掉,查看两个slave的role是什么?
(4)验证能不能再slave节点set数据?
(5)当重新启动一个master2之后,将slave1与其建立主从关系,那么slave1和master1的关系还保留吗?
为了探究上面的答案,下面我们一步步动手验证起来把
第一步:首先介绍下服务器上的目录结构
192.168.121.139节点:

我们需要新建两个文件夹并命名为6379和6380,redis目录为redis相关的源码和配置,如下图:
在这里插入图片描述
192.168.121.140节点:
在这里插入图片描述
第二步:拷贝并修改配置文件
首先我们将139节点的redis目录下的redis.conf文件拷贝到文件夹6379下,然后进入到6379文件夹下。我们接下来需要修改配置文件夹的以下配置:
(1)daemonize:是否开启守护线程,默认no,修改为yes
在这里插入图片描述
(2)port:监听端口,修改为6379
在这里插入图片描述
(3)pidfile:进程号,修改值为/data/redis/6379/6379.pid
在这里插入图片描述
(4)logfile:日志文件目录,修改为/data/redis/6379/6379.log
在这里插入图片描述
(5)dir:工作目录,这里应该为文件夹,修改为/data/redis/6379
在这里插入图片描述
(6)bind:修改为机器真实ip地址,记住一定不要配置127.0.0.1,否则slave连接不上master。当然如果是slave可以不用修改。
按照上述步骤修改完后,启动redis-server后,在6379文件夹下就会自动生成配置的文件
在这里插入图片描述
其他的节点配置都是一样的,可以按照上面的步骤修改为对应的值。

第三步:启动三个节点
首先在139节点,进入到/data/redis/redis/src文件夹下,执行下面命令启动6379和6380redis

./redis-server /data/redis/6379/6379.conf
./redis-server /data/redis/6380/6380.conf
同样140节点,进入到到/data/redis/redis/src文件夹下,执行下面命令启动6381redis

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

第四步:使用redis提供的客户端连接redis,探究我们最初的5个问题
分别在139和140节点,进入到/data/redis/redis/src文件夹下,执行下面命令连接redis服务

./redis-cli -p 6379
./redis-cli -p 6380
./redis-cli -p 6381
通过命令info replication查看各节点的主从信息
在这里插入图片描述
刚开始各节点的role都是master。

下面我们验证第一个问题:
(1)当salve没有和master建立关系之前,master首先set部分数据,再其建立关系后,master之前set的数据会不会同步到两个slave节点?
首先我们在140的6381set一个数据set k2 v2
在这里插入图片描述
然后查看139节点上6379和6380上有没有k2
在这里插入图片描述
在这里插入图片描述
我们可以知道这两个redis并没有 k2的值
下面我们,将6379和6380设置为slave,执行下面命令,ip地址是master的ip地址,端口号是master监听端口

SLAVEOF 192.168.121.140 6380
SLAVEOF 192.168.121.140 6381
我们再次执行info replication命令,我们看到6379和6380的role是slave
在这里插入图片描述
在这里插入图片描述
这是我们再次查看是否存在 k2时,结果为:
在这里插入图片描述
在这里插入图片描述
结论:当salve没有和master建立关系之前,master首先set部分数据,再其建立关系后,master之前set的数据会同步到两个slave节点

(2)当两个slave节点之一挂掉,然后再次重启,查看redis节点的role是什么?
首先我们停掉6379节点,执行shutdown命令,然后重启查看role
在这里插入图片描述
结论:当两个slave节点之一挂掉,然后再次重启,查看redis节点的role还是master。这里需要注意的是如果我们把slaveof配置在conf文件中,则重启会加载配置文件,最终还是slave。
(3)当master节点挂掉,查看两个slave的role是什么?
我们执行shutdown命令停掉master,查看两个slave的role
在这里插入图片描述
在这里插入图片描述
结论:当master关掉后,两个slave还是的role还是slave,只是master_link_status是down,标识和master断开连接了。
(4)验证能不能再slave节点set数据?
随便在任意slave节点set值,查看情况
在这里插入图片描述
结论:slave节点不能set数据,只能读数据,但是在master节点可以读写数据。
(5)当重新启动一个master2之后,将slave1与其建立主从关系,那么slave1和master1的关系还保留吗?
按照第二步重新启动一个master节点6382,在6379执行slaveof 192.168.121.140 6382后,查看role和缓存的数据
在这里插入图片描述
在这里插入图片描述
可以看到之前master1同步的数据没有了,并且其主节点已经换成master2了,说明一个slave只能和一个master建立关系。

总结:本文主要研究redis在主从复制模式下,研究了主和从的关系。一点一滴进步。

猜你喜欢

转载自blog.csdn.net/sinat_30160727/article/details/84799012