redis-1 之redis编译安装、主从复制、高可用

49 篇文章 0 订阅


server2、server3、server4都先将 mysqld关闭。

systemctl disable --now mysqld

redis编译安装

从官网上下载redis包,稳定版的。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

安装gcc与make

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

查看server2为master
在这里插入图片描述server2上也需要关闭mysqld服务。
在server3上先关闭mysqld服务
在这里插入图片描述
在server3上先关闭mysqld服务

在这里插入图片描述
将server2上的安装包远程复制到server3

在这里插入图片描述
server3安装make,与gcc
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
server3运行redis
在这里插入图片描述

redis实现一主一从复制

通过redis,实现主从复制。

myslq的主从复制是可以针对数据库的,不同数据库库的主从可以是不同的主机。这一个数据库中这个主机是主,可能在另一个数据库中,这个主机就是从了。

而在redis中,如果确定了一个主机是从,那么该主机之前的数据都会给刷掉,flushall。清除以后再载入数据,且一旦变成从服务器,那么该主机对数据就是read only。

server 2 ------172.20.10.6 ---- redis master
server 3 ------ 172.20.10.8 ---- redis slave

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

redis+sentinel 实现高可用

在redis主从复制的基础上实现高可用。当master故障,salve会自动接管。自动切换。

sentinel使用哨兵模式,自动监视Master节点,当前挂掉后,自动将Slaver节点变为Master节点

Sentinel(哨兵)是用于监控redis集群中Master状态的工具,是Redis 的高可用性解决方案,sentinel哨兵模式已经被集成在redis2.4之后的版本中。

sentinel可以让redis实现主从复制,当一个集群中的master失效之后,sentinel可以选举出一个新的master用于自动接替master的工作,集群中的其他redis服务器自动指向新的master同步数据。一般建议sentinel采取奇数台,防止某一台sentinel无法连接到master导致误切换。

注意:
一主两从的情况下,当master与两个slave或因网络关系断掉的情况下,客户端并不知道master失联,会持续写入数据,但此时slave端已经不能复制数据。
如果需要解决此问题,则需要两个slave同时认定不能连接master,或者,超过设定时间不能连接,则此时master端会拒绝客户端继续写入,那么重新接入变成slave时就不会造成数据丢失。

server1----172.20.10.7-----测试用
server2----172.20.10.6-----老master
server3----172.20.10.8-----新master
server4----172.20.10.10----- slave

先给server4上安装redis
直接将server2上的redis源码目录拷贝到server4,server4就不用make了,直接make install
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
vim /etc/redis/6379.conf
在这里插入图片描述
在这里插入图片描述server开启redis服务
在这里插入图片描述server2(master)上查看到集群成员的信息,slave是server3(主机8)和server4(主机10)
在这里插入图片描述
server3查看info,master为server2(主机6)
在这里插入图片描述server4查看info,master为server2(主机6)
在这里插入图片描述
根据官方文档进行高可用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述查看官方文档上对各个字段的解释
+slave为检测到新的slave节点
+sdown为主观下线
-sdown为取消主观下线
在这里插入图片描述使用命令redis-sentinel /etc/redis/sentinel.conf运行sentinel

集群成员server2、server3、server4上的sentinel运行结果应该是同步的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述server1 ssh 连接server3,查看info
在这里插入图片描述server1 ssh 连接server4,查看info
在这里插入图片描述server1 ssh 连接server2,开启redis服务
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

min-slaves-to-write

考虑这样的一种情况:哨兵(sentinel)在实时健康检测。正常情况下,客户端在master写,发生数据更改。master会将数据同步到slave1和slave2。如果master和salve的网络断开,master无法和slave连接了。那么两个slave会投票,认为目前的master故障了,那么master会变成客观下线状态。这时,哨兵会从salve中再次选出一个新的master。比如slave2当选新的master,那么slave1就会重新指向新的master。但是老的master不知道哨兵已经选出了新的master,而且客户端也不知道master和slave之间网络故障了而且老的master也没有设置不允许写入,所以还在向老的master中写入数据(老的master和slave都是正常工作的,只是master与slave之间的网络故障了)。当网络恢复之后,老的master就发现集群中有两个master。老的master就只能以slave的身份接入到集群中。(master不能回切)。。根据上面的实验知道,当网络恢复之后,老的master会以slave的身份重新加入集群,并会把原先的数据flushall。这就导致客户端在网络故障之前向老的master写入的数据丢失。

min-slaves-to-write=2 表示master至少有salve时,才能向master写,保持数据一致性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值