Redis主从复制实现

Redis主从复制实现

为了避免单点故障,我们需要将数据复制多份部署在多台不同的服务器上,即使有一台服务器出现故障其他服务器依然可以继续提供服务。
在这里插入图片描述
修改配置文件,启动时,服务器读取配置文件,并自动成为指定服务器的从服务器,从
而构成主从复制的关系

实现步骤:

模拟多 Reids 服务器,在一台已经安装 Redis 的机器上,运行多个 Redis 应用模拟多个 Reids 服务器。一个 Master,两个 Slave.

  1. 新建三个 Redis 的配置文件

作为 Master 的 Redis 端口是 6380 作为 Slaver 的 Redis 端口分别是 6382 , 6384
从原有的 redis.conf 拷贝三份,分别命名为 redis6380.conf, redis6382.conf , redis6384.conf

在这里插入图片描述

  1. 编辑 Master 配置文件
    编辑 Master 的配置文件 redis6380.conf : 在空文件加入如下内容:
include /usr/local/redis-4.0.13/redis.conf 
daemonize yes 
port 6380 
pidfile /var/run/redis_6380.pid 
logfile 6380.log 
dbfilename dump6380.rdb 
  1. 编辑 Slave 的配置文件
    编辑 Slave 的配置文件 redis6382.conf 和 redis6384.conf 在空文件加入如下内容:
include /usr/local/redis-4.0.13/redis.conf 
daemonize yes 
port 6382 
pidfile /var/run/redis_6382.pid 
logfile 6382.log 
dbfilename dump6382.rdb 
slaveof 127.0.0.1 6380
include /usr/local/redis-4.0.13/redis.conf 
daemonize yes 
port 6384 
pidfile /var/run/redis_6384.pid 
logfile 6384.log 
dbfilename dump6382.rdb 
slaveof 127.0.0.1 6380

配置项说明: slaveof :表示当前 Redis 是谁的从。当前是 127.0.0.0 端口 6380 这个 Master 的从。

  1. 启动服务器 Master/Slave 都启动
    在这里插入图片描述
  2. 查看配置后的服务信息
    登录到 Master:6380
    在这里插入图片描述
    在客户端的 Redis 内执行命令 info replication Master 服务的查看结果:
    在这里插入图片描述
    分别登录到 6382 ,6384 查看信息
    在这里插入图片描述

测试

向 Master 写入数据
在 6380 执行 flushall 清除数据,避免干扰的测试数据。生产环境避免使用。

在这里插入图片描述

在从 Slave 读数据
6382,6384 都可以读主 Master 的数据,不能写

在这里插入图片描述

Slave 写数据失败

在这里插入图片描述

容灾处理

当 Master 服务出现故障,需手动将 slave 中的一个提升为 master,剩下的 slave 挂至新的
master 上(冷处理:机器挂掉了,再处理)

命令:
①:slaveof no one,将一台 slave 服务器提升为 Master (提升某 slave 为 master)
②:slaveof 127.0.0.1 6382 (将 slave 挂至新的 master 上)

执行步骤:
  1. 将 Master:6380 停止(模拟挂掉)
    在这里插入图片描述
  2. 选择一个 Slave 升到 Master
    在这里插入图片描述
  3. 将其他 Slave 挂到新的 Master
    在这里插入图片描述

现在的主从(Master/Slave)关系:Master 是 6382, Slave 是 6384
通过查看 6382信息得:

在这里插入图片描述

  1. 原来的服务器重新添加到主从结构中

6380 的服务器修改后,从新工作,需要把它添加到现有的 Master/Slave 中先启动 6380 的 Redis 服务

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

将6380挂到 Master 上

在这里插入图片描述

查看新的 Master 信息

在这里插入图片描述

总结

  1. 一个 master 可以有多个 slave
  2. slave 下线,读请求的处理性能下降
  3. master 下线,写请求无法执行
  4. 当 master 发生故障,需手动将其中一台 slave 使用 slaveof no one 命令提升为 master,其它 slave 执行 slaveof 命令指向这个新的 master,从新的 master 处同步数据
  5. 主从复制模式的故障转移需要手动操作,要实现自动化处理,这就需要 Sentinel 哨兵,实现故障自动转移
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值