iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Redis中怎么实现备份和容灾
  • 555
分享到

Redis中怎么实现备份和容灾

2024-04-02 19:04:59 555人浏览 薄情痞子
摘要

Redis中怎么实现备份和容灾,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. 会话缓存(Session Cache)Redis缓存会话有非

Redis中怎么实现备份和容灾,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

1. 会话缓存(Session Cache)

Redis缓存会话有非常好的优势,因为Redis提供持久化,在需要长时间保持会话的应用场景中,如购物车场景这样的场景中能提供很好的长会话支持,能给用户提供很好的购物体验。

2. 全页缓存

WordPress中,Pantheon提供了一个不错的插件wp-redis,这个插件能以最快的速度加载你曾经浏览过的页面。

3. 队列

Reids提供list和set操作,这使得Redis能作为一个很好的消息队列平台来使用。

我们常通过Reids的队列功能做购买限制。比如到节假日或者推广期间,进行一些活动,对用户购买行为进行限制,限制今天只能购买几次商品或者一段时间内只能购买一次。也比较适合适用。

4. 排名

Redis在内存中对数字进行递增或递减的操作实现得非常好。所以我们在很多排名的场景中会应用Redis来进行,比如小说网站对小说进行排名,根据排名,将排名靠前的小说推荐给用户。

5. 发布/订阅

Redis提供发布和订阅功能,发布和订阅的场景很多,比如我们可以基于发布和订阅的脚本触发器,实现用Redis的发布和订阅功能建立起来的聊天系统。

此外还有很多其它场景,Redis都表现的不错。

二,Redis使用中单点故障问题

正是由于Redis具备多种优良特新,且应用场景非常丰富,以至于Redis在各个公司都有它存在的身影。那么随之而来的问题和风险也就来了。Redis虽然应用场景丰富,但部分公司在实践Redis应用的时候还是相对保守使用单节点部署,那为日后的维护带来了安全风险。

在2015年的时候,曾处理过一个因为单点故障原因导致的业务中断问题。当时的Redis都未采用分布式部署,采用单实例部署,并未考虑容灾方面的问题。

当时我们通过Redis服务器做用户购买优惠商品的行为控制,但后来由于未知原因Redis节点的服务器宕机了,导致我们无法对用户购买行为进行控制,造成了用户能够在一段时间内多次购买优惠商品的行为。

这种宕机事故可以说已经对公司造成了不可挽回的损失了,安全风险问题非常严重,作为当时运维这个系统的我来说有必要对这个问题进行修复和在架构上的改进。于是我开始了解决非分布式应用下Redis单点故障方面的研究学习

三,非分布式场景下Redis应用的备份与容灾

Redis主从复制现在应该是很普遍了。常用的主从复制架构有如下两种架构方案。

常用Redis主从复制

  • 方案一

Redis中怎么实现备份和容灾

这是最常见的一种架构,一个Master节点,两个Slave节点。客户端写数据的时候是写Master节点,读的时候,是读取两个Slave,这样实现读的扩展,减轻了Master节点读负载。

  • 方案二

Redis中怎么实现备份和容灾

这种架构同样是一个Master和两个Slave。不同的是Master和Slave1使用keepalived进行VIP转移。Client连接Master的时候是通过VIP进行连接的。避免了方案一IP更改的情况。

Redis主从复制优点与不足

  • 优点

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2. 实现了对master数据的备份,一旦master出现故障,slave节点可以提升为新的master,顶替旧的master继续提供服务

  3. 实现读扩展。使用主从复制架构, 一般都是为了实现读扩展。Master主要实现写功能,  Slave实现读的功能

  • 不足

架构方案一

当Master出现故障时,Client就与Master端断开连接,无法实现写功能,同时Slave也无法从Master进行复制。

Redis中怎么实现备份和容灾

此时需要经过如下操作(假设提升Slave1为Master):

1)在Slave1上执slaveof no one命令提升Slave1为新的Master节点。

2)在Slave1上配置为可写,这是因为大多数情况下,都将slave配置只读。

3)告诉Client端(也就是连接Redis的程序)新的Master节点的连接地址。

4)配置Slave2从新的Master进行数据复制。

架构方案二

当master出现故障后,Client可以连接到Slave1上进行数据操作,但是Slave1就成了一个单点,就出现了经常要避免的单点故障(single point of failure)。

Redis中怎么实现备份和容灾

之后需要经过如下操作:

1)在Slave1上执行slaveof no one命令提升Slave1为新的Master节点

2)在Slave1上配置为可写,这是因为大多数情况下,都将Slave配置只读

3)配置Slave2从新的Master进行数据复制

可以发现,无论是哪种架构方案都需要人工干预来进行故障转移(failover)。需要人工干预就增加了运维工作量,同时也对业务造成了巨大影响。这时候可以使用Redis的高可用方案-Sentinel

四,Redis Sentinel介绍

Redis Sentinel为Redis提供了高可用方案。从实践方面来说,使用Redis Sentinel可以创建一个无需人为干预就可以预防某些故障的Redis环境。

Redis Sentinel设计为分布式的架构,运行多个Sentinel进程来共同合作的。运行多个Sentinel进程合作,当多个Sentinel同一给定的master无法再继续提供服务,就会执行故障检测,这会降低误报的可能性。

五,Redis Sentinel功能

Redis Sentinel在Redis高可用方案中主要作用有如下功能:

Sentinel会不断的检查master和slave是否像预期那样正常运行

  • 通知

通过api,Sentinel能够通知系统管理员、程序监控的Redis实例出现了故障

  • 自动故障转移

如果master不像预想中那样正常运行,Sentinel可以启动故障转移过程,其中的一个slave会提成为master,其它slave会重新配置来使用新的master,使用Redis服务的应用程序,当连接时,也会被通知使用新的地址。

  • 配置提供者

Sentinel可以做为客户端服务发现的认证源:客户端连接Sentinel来获取目前负责给定服务的Redis master地址。如果发生故障转移,Sentinel会报告新的地址。

六,Redis Sentinel架构

Redis中怎么实现备份和容灾

七,Redis Sentinel实现原理

Sentinel集群对自身和Redis主从复制进行监控。当发现Master节点出现故障时,会经过如下步骤:

1)Sentinel之间进行选举,选举出一个leader,由选举出的leader进行failover

2)Sentinel leader选取slave节点中的一个slave作为新的Master节点。对slave选举需要对slave进行选举的方法如下:

a) 与master断开时间

如果与master断开的时间超过down-after-milliseconds(sentinel配置) * 10秒加上从sentinel判定master不可用到sentinel开始执行故障转移之间的时间,就认为该slave不适合提升为master。

b) slave优先级

每个slave都有优先级,保存在redis.conf配置文件里。如果优先级相同,则继续进行。

c) 复制偏移位置

复制偏移纪录着从master复制数据复制到哪里,复制偏移越大表明从master接受的数据越多,如果复制偏移量也一样,继续进行选举

d) Run ID

选举具有最小Run ID的Slave作为新的Master

流程图如下:

Redis中怎么实现备份和容灾

3) Sentinel leader会在上一步选举的新master上执行slaveof no one操作,将其提升为master节点

4)Sentinel leader向其它slave发送命令,让剩余的slave成为新的master节点的slave

5)Sentinel leader会让原来的master降级为slave,当恢复正常工作,Sentinel leader会发送命令让其从新的master进行复制

看完上述内容,你们掌握Redis中怎么实现备份和容灾的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网数据库频道,感谢各位的阅读!

您可能感兴趣的文档:

--结束END--

本文标题: Redis中怎么实现备份和容灾

本文链接: https://www.lsjlt.com/news/58811.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Redis中怎么实现备份和容灾
    Redis中怎么实现备份和容灾,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. 会话缓存(Session Cache)Redis缓存会话有非...
    99+
    2024-04-02
  • SQLServer中怎么实现备份和灾难恢复
    本篇文章为大家展示了SQLServer中怎么实现备份和灾难恢复,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。各大服务器硬件厂商(IBM,HP等)提供有很好的数据保护...
    99+
    2024-04-02
  • Redis怎么实现数据的备份和恢复
    Redis可以通过以下几种方式实现数据的备份和恢复: RDB持久化:Redis可以将内存中的数据定期或者根据配置的条件写入磁盘文...
    99+
    2024-05-07
    Redis
  • mysql中怎么实现物理备份和增量备份
    本篇文章为大家展示了mysql中怎么实现物理备份和增量备份,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 物理备份:    &nbs...
    99+
    2024-04-02
  • 如何在Couchbase中实现数据备份和灾难恢复计划
    在Couchbase中实现数据备份和灾难恢复计划可以通过以下步骤来进行: 使用Couchbase内置的备份和恢复功能:Couch...
    99+
    2024-04-09
    Couchbase
  • redis容灾和雪崩指的是什么
    Redis容灾是指在Redis的集群部署或主从复制中,当某个节点或主节点出现故障时,能够保证系统的正常运行,即保证数据的可用性和持久...
    99+
    2023-10-26
    redis
  • MongoDB的容灾与备份恢复策略是什么
    MongoDB提供了多种容灾与备份恢复策略,包括: 复制集(Replica Set):MongoDB的复制集是一组MongoDB...
    99+
    2024-05-07
    MongoDB
  • 宝塔面板如何进行网站容灾和备份恢复
    宝塔面板提供了网站容灾和备份恢复的功能,具体操作步骤如下:1. 登录宝塔面板,进入主页面。2. 在左侧菜单栏中找到并点击"网站"选项...
    99+
    2023-10-09
    宝塔面板
  • PHP开发中如何处理高可用和灾备备份
    在现代网络应用程序开发中,高可用性和灾备备份是非常重要的考虑因素。高可用性指的是系统能够在面对故障时保持对用户的可用性。灾备备份指的是在面对严重故障或灾难时,能够迅速恢复系统并保证数据的完整性和可用性。在PHP开发中,我们可以采取一些方法来...
    99+
    2023-10-21
    PHP开发 高可用架构 灾备备份
  • 如何在AmazonAurora中实现数据库的灾难恢复和紧急备份
    在Amazon Aurora中,可以实现数据库的灾难恢复和紧急备份的方式如下: 自动备份:Amazon Aurora提供了自动备份...
    99+
    2024-04-09
    AmazonAurora
  • PHP中使用Redis实现异地备份
    随着互联网技术的不断发展和应用的广泛,数据备份和恢复逐渐变得越来越重要。在开发过程中,数据的备份和恢复也是非常重要的一步。而Redis作为一个内存型数据库,具有快速、高效、可靠等优点,在PHP开发中得到了广泛应用。本文将重点介绍在PHP中如...
    99+
    2023-05-18
    PHP redis 异地备份
  • 美国服务器容灾备份的重要性是什么
    美国服务器容灾备份的重要性体现在以下几个方面: 数据安全保障:服务器容灾备份可以确保数据在灾难发生时不会丢失。备份数据可以帮助企...
    99+
    2024-04-09
    美国服务器 服务器
  • redis如何实现主从备份
    redis如何实现主从备份?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.redis-server的主备关系:master : redis-1slave1 :...
    99+
    2023-06-14
  • 怎么通过Openshift实现K8S容灾
    这篇文章主要讲解了“怎么通过Openshift实现K8S容灾”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么通过Openshift实现K8S容灾”吧!如何通过Red Hat Openshi...
    99+
    2023-06-04
  • redis怎么创建备份
    redis创建备份的方法:redis中save命令用于创建当前数据库的备份,先启动服务端,例如:“[root@tata-mysql-qa bin]# ./redis-cli -h 172.16.188.81”,再输入save命令即可创建当前...
    99+
    2024-04-02
  • MySQL中怎么实现全备份
    本篇文章为大家展示了MySQL中怎么实现全备份,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、利用全备恢复一个库(database)的数据案例:朋友在群里问, M...
    99+
    2024-04-02
  • 服务器容灾备份解决方案有什么优势
    服务器容灾备份解决方案的优势主要包括: 数据安全性高:容灾备份可以确保数据的安全性,即使主服务器发生故障或遭受攻击,也能够快速恢...
    99+
    2024-04-24
    服务器
  • MySQL中如何进行数据备份和灾难恢复
    在MySQL中,可以使用以下方法进行数据备份和灾难恢复: 数据备份: 使用mysqldump命令:可以通过命令行使用mysql...
    99+
    2024-03-06
    MySQL
  • SVN仓库的全量备份和增量备份怎么实现
    这篇文章主要介绍“SVN仓库的全量备份和增量备份怎么实现”,在日常操作中,相信很多人在SVN仓库的全量备份和增量备份怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SVN仓库的全量备份和增量备份怎么实现...
    99+
    2023-06-04
  • Mysql数据库中怎么实现备份和还原
    这期内容当中小编将会给大家带来有关Mysql数据库中怎么实现备份和还原,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  1、备份MySQL数据库的命令 双击代码全选...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作