【全程代码干货】Redis主从复制 -> 伪集群搭建 -> 哨兵模式

Redis主从复制


1. 主从复制概述


  1. 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。将前者称为主节点(master),后者称为从节点(slave)
  2. Redis中,数据的复制都是单向的,只能由主节点到从节点,主机以为主,从机以为主
  3. 主从复制,读写分离!大部分时候操作者都是在进行读取数据操作,主从复制可用来减缓服务器的压力;减少数据损失的风险等
# 查看主从复制情况
info replication

在这里插入图片描述

主从复制的作用主要包括︰

  1. 数据冗余︰主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
  2. 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
  3. 负载均衡∶在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
  4. 高可用基石︰除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。

2. 环境配置


从不纸上谈兵,上代码!!!

测试一台主机+两台从机,只配置从机数据库,不修改主机数据库

首先复制出三个配置文件来保证三台redis机器的加载,表示我们三个机器的启动端口为638063816382

在这里插入图片描述

需要修改的文件内容,特别注意,现利用其中一个文件举例,如下

  • 修改端口号:port

在这里插入图片描述

  • 修改PID名称:pidfile

在这里插入图片描述

  • 修改日志名称:logfile

在这里插入图片描述

  • 修改RDB名称:dump.rdb

在这里插入图片描述

之后按照不同的配置文件启动不同的redis服务

redis-server redisMaster80.conf
redis-server redisSlave81.conf
redis-server redisSlave82.conf

查看后台启动程序,如果三个全部存在表示启动成功

ps -ef | grep redis

在这里插入图片描述

如图所示,现已开启三台服务器,端口分别为638063816382


3. 一主二从伪集群搭建


在没有配置前,三台都默认是主机master

info replication

在这里插入图片描述

现需实现一台主机(6380)+两台从机(6381,6382)

3.1 临时配置


临时配置通过命令行生效,现前往6381所在的服务器(6382配置同样),执行命令,表示将其变为6380的从机

slaveof 127.0.0.1 6380

再次查看6381主从复制情况,已变为从机

info replication

在这里插入图片描述

查看主机6380主从复制情况,拥有两台从机

在这里插入图片描述

如果主机断开,可使用以下命令将自己变为主机,其余的节点可手动连接到自己

就算主机重新连接,自己依旧为主机

slaveof no one

3.2 永久配置


永久配置需要修改配置文件redis.conf,搜索关键字replicaof

在这里插入图片描述

若是填写这个关键字,则启动之后默认为从机,所以修改从机的配置文件即可

# 填写主机ip地址和端口
replicaof <masterip> <masterport>

# 填写主机密码(如果存在)
masterauth <master-password>

3.3 细节


全量复制:从机每次连接到主机,都可以获取主机中的全部数据

增量复制:主机每次添加新的值,从机都可以获取

原理

  1. 主机可以写入数据,从机自动可读取数据
  2. 从机不能写入数据,写入则报错
  3. 主机断开连接,从机依旧可以读取数据;当主机重新连接,依旧可以写入数据
  4. 如果使用命令行配置主从复制(临时),如果从机重启,则会变回主机;但是如果重新变为从机,则数据全部可再次获取

3.4 常见模型


一主二从

在这里插入图片描述

贪吃蛇

在这里插入图片描述


4. 哨兵模式


概述

  1. 主从切换技术的方法是∶当主服务器宕机后,需要手动把一台从服务器切换为主服务器

  2. 存在的缺点:需要人工干预,费事费力,还会造成一段时间内服务不可用

  3. 哨兵模式:能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库

  4. 哨兵模式原理:哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例

  5. 通常情况下,哨兵模式会存在多个哨兵(至少3个以上,为奇数),在监控节点的同时,哨兵之间互相监控

在这里插入图片描述

配置

  1. 在配置文件目录下/usr/local/bin/myRedisConfig,新建哨兵文件sentinel.conf(千万不能写错),添加如下内容
# 格式如下,其中最后的1表示一旦主机下线,则让从机进行投票
sentinel monitor <监控器名称> <主机节点ip> <启动端口> 1

# 举例
sentinel monitor myRedis 127.0.0.1 6380 1 
  1. 启动哨兵模式,调用刚才编辑的配置文件
redis-sentinel sentinel.conf

此时的主机是6380,从节点是63816382

在这里插入图片描述

  1. 当主机断开,哨兵模式便启动,自动选举新主机,此时6082成为了新主机

在这里插入图片描述

再次查看6382已经变为主机

在这里插入图片描述

  1. 当旧主机6380再次连接,将会变成新主机6382的从节点

在这里插入图片描述

优缺点

优点:

  1. 哨兵集群,基于主从复制模式,所有的主从配置优点
  2. 主从可以切换,故障可以转移,系统的可用性就会更好
  3. 哨兵模式就是主从模式的升级,手动到自动。更加健壮

缺点:

  1. Redis不好在线扩容,集群容量一旦到达上限,在线扩容十分麻烦
  2. 实现哨兵模式的配置其实是很麻烦的,存在很多配置选择
  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值