Redis 备份恢复以及数据迁移

昨晚老板突然在群里发了一张图片,说昨天才用的,怎么今天还要登录?相关人赶紧看看。
image.png

我心想让你登录就登录呗,哪来那么多事?本想洗洗睡了。老大突然微信问我说,是不是 Redis 出问题了?怎么用户的登录态没了?我们趁老板还没收到客户投诉之前把数据恢复一下。

没办法既然到找到我了,那就是对我的百分百信任,为公司赴汤蹈火在所不辞。更何况只是恢复一下数据呢,你说是吧?
image.png

Redis 恢复数据那就免不了和 RBD、AOF这俩老货打交道了。

简单来说:

  • RDB 是全量备份
  • AOF 是增量备份
    image.png

别急,再通俗点:

  • RDB 就是在一个特定的时间点把全部数据备份一次
  • AOF 就是如果写入了,就把这次写操作记起来
    image.png

别动手,举个栗子给你,包懂的:

我女朋友送了一盒乐高给我,打算和我在星期四的晚上点个KFC疯狂套餐。然后做一件疯狂的事情。

我把盒子拿出来一看,封面已经把乐高模型都画出来了。我说这不是洒洒水吗?10分钟搞定它。

1个小时后,装逼不成的我只能求女票把说明书给我,然后和我一起拼。

经过两个人近3个小时的鏖战,模型终于是拼好了。

image.png

把你的脚放下,我马上解释。在这个例子中,盒子封面就相当于RDB,它是乐高模型在某个时刻的样子,有一个词我相信你一定听过,快照。我可以在拼好底座的时候拍个照,这是一个快照。在底座的基础上再拼上主体,然后我再拍个照,这也是一个快照。总之呢,只要能通过这张照片欢迎出原来的东西,那这张照片就是一个完美的快照。像我拆电脑前必须先拍张照片,不是怕忘记什么。只是我想记住写什么,免得多出来一两颗螺丝就不好了。

image.png

说了半天,AOF呢?你难道没发现我最后是靠什么拼好乐高模型的吗?没错说明书就相当于AOF。说明书记录了底座要怎么拼,主体要怎么拼,以及最后的封顶要怎么拼。每一步都给你写清楚,就怕你到时候没拼好找他退钱。AOF 就是这样工作的,当我向 Redis 里面写入数据时,他就记起来,一直记一直记。只要记得足够多,那还原不是简简单单3小时的事吗?

拼完乐高之后,我女票说她累了,要我抱抱

image.png

咳咳,这篇文的主题是什么来着?Redis 数据迁移,差点忘了。接下来就是劲爆的数据迁移,请先去厕所,然后打开再看,我怕你们其他时间不看。

说回数据恢复,首先看一下 Redis 实例有没有开启备份

127.0.0.1:6379> CONFIG GET save
1) "save"
2) ""
127.0.0.1:6379> CONFIG GET appendonly
1) "appendonly"
2) "no"

哇哦,看到这个结果的时候我心都死了,这表示不会自动进行 RDB 备份,没有开启 AOF 备份。我嘞个豆,你让我做饭,但是不给我米,还说想吃香香的饭,那我怎么办?我只能问运维有没有备份,意外的是运维说他昨晚刚备份完。确实挺意外的,果然这小伙之前被叼那么多次是有用的。

既然有备份文件了 ,那就直接恢复吧,数据丢点就丢点。总比全部丢了要强。突然发现我的Redis是部署在K8S里面的,那我就得先把文件给复制进去。

kubectl cp ./2406141123dump.rdb prod/redis-deploy-6764468fd6-lrkq7:/data/2406141123dump.rdb kubectl cp <local-file_name> <name-space>/<pod-name>:<pod-file-name>

然后执行恢复命令

# 先找到对应得pod
kubectl get pods -n prod | grep redis # 进入pod
kubectl exec -it <pod-name> bash -n <name-space># 通过redis-cli 恢复rdb
redis-cli -h localhost -p 6379 --rdb /data/2406141123dump.rdb

这时候我们就拥有群里的狗叫权了

image.png

数据恢复完之后的常规操作那当然是再备份一把了,我们可以选择开启RDB的自动备份和AOF,但是但是那是运维的事情。秉承着别人的事情我坚决不做,自己的事情适当不做的原则,我们忽略它。
然后手动触发一次RDB备份,给回运维保存,数据恢复就告一段落了。

# 先查一下现在的rdb最新备份时间
127.0.0.1:6379> lastsave
(integer) 1718779144# 触发备份
127.0.0.1:6379> bgsave
Background saving started#再查一遍最新备份时间,如果和上次不同就说明成了
127.0.0.1:6379> lastsave
(integer) 1719225459127.0.0.1:6379> exit

别忘了,我们现在在 K8S 的pod里面,我们还得把备份文件复制到宿主机去

# 先看一下有没有备份文件 dump.rdb
ls -l /data# 将k8s中pod的文件拷贝到宿主机
kubectl cp prod/redis-deploy-6764468fd6-lrkq7:/data/dump.rdb ./dump.rdb

发给运维,大功告成。

image.png

作为一个专业的前端后端运维测试工程师,我们解决了问题,还得解决提出问题的人(bushi)。
让我来看看怎么个事?问就是流量突增,毕竟这是所有人都喜欢的答案,当然是包括我的,这意味着我们只要加钱就行了。加钱就意味着是老板给的不够,不是我们前端后端运维测试工程师的问题。

这该死的世界啊,我究竟要为这个世界背负多少的秘密。我永远不会告诉别人,当时Redis所在的机器莫名重启了,而且Redis是单节点,没有挂载持久化盘。而且运维每天都是手动备份,我当时能拿到前一天的备份真的是好运,因为他想起来他好几天没备份了,就备份了一下子。

image.png

既然发现了问题那就解决问题吧,既然 Redis 单节点而且没有持久化,那我们就打一层反逻辑。在集群里面部署一个 多节点有持久化的 Redis,是不是就解决了。是的,答案往往就是这么的朴实无华。那有没有更好更简单的方法呢?必定是有的。给钱申请一个云Redis,然后把数据迁移过去,完美。

image.png

可用性和持久化解决了,那接下来就是数据迁移了,我找了挺多工具的,但最后只留下两个来尝试,因为很多工具都不维护了:

  • https://github.com/erikdubbelboer/phpRedisAdmin
  • https://github.com/tair-opensource/RedisShake

image.png

phpRedisAdmin 有图形页面,还能导入导出。看起来相当不错,但是有这几个问题让我放弃了它:

  • 导出结果是字符串格式的,有序列化问题
  • 导出结果没有过期时间
  • key 多的时候,页面很卡

image.png

这就是我导出内容的一部分截图,中间那一堆乱码是因为我用来默认了 RedisTemplate

然后是 Redis-Shake,这是一个go写的,专门用来做数据迁移的工具。支持多种方式从源Redis实例拉取数据同步到目标实例。

# 下载二进制文件
wget https://github.com/tair-opensource/RedisShake/releases/download/v4.1.0/redis-shake-linux-amd64.tar.gz# 解压
tar -zxvf redis-shake-linux-amd64.tar.gz# 修改配置文件 shake.toml,然后执行同步
./redis-shake shake.toml

image.png

靠谱

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/860952.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

主播美颜工具:美颜SDK的技术原理与应用

美颜SDK不仅大幅提升了主播的颜值&#xff0c;还极大地改善了用户的观看体验。本文将从美颜SDK的技术原理、应用场景以及未来发展趋势等方面进行深入探讨。 一、美颜SDK的技术原理 美颜SDK的核心在于其强大的图像处理技术&#xff0c;通过实时图像处理算法&#xff0c;对视频中…

解决google chrome helper 内存占用较高!

导语&#xff1a;mac 后台有很多 google chrome helper 线程并且内存占用较高。一直怀疑是IDEA插件的锅&#xff0c;并不是&#xff01; 查看是哪个网页&#xff0c;哪个插件占用内存。 chrome 更多工具 -> 任务管理器&#xff1a; 找到罪魁祸首&#xff0c;关闭标签页或者…

基于SpringBoot+IDEA+Mysql开发的在线音乐网站

基于SpringBootIDEAMysql开发的在线音乐网站 项目介绍&#x1f481;&#x1f3fb; 项目背景描述 随着互联网技术的迅猛发展和数字音乐的普及&#xff0c;传统的音乐消费方式正逐渐发生变革。为了满足广大音乐爱好者对于便捷、高效、个性化的音乐服务需求&#xff0c;我们计划开…

解锁高效办公:ONLYOFFICE版本8.1新功能揭秘与个人使用体验

文章目录 &#x1f4af;ONLYOFFICE 桌面编辑器 8.1 ✍1 新增功能介绍✍2 轻松编辑器PDF文件&#x1f353;2.1 PDF新增编辑器操作&#x1f353;2.2 PDF新增表单操作 ✍3 用幻灯片版式快速修改幻灯片✍4 无缝切换文档编辑、审阅和查看模式✍5 改进从右至左语言的支持 & 新的本…

python调用.a或.dll库的运行结果异常的问题记录

问题复述&#xff1a; 博主有个对外的c库&#xff0c;封成.a或.dll库文件以后对外开放&#xff0c;使用ctypes实现对库文件的调用&#xff0c;最早发现①计算过程老是没结束的就异常退出&#xff0c;解决以后&#xff0c;现在又发现②不同的python版本调用库的计算结果不同&am…

C# 任务调度 c# TaskScheduler

摘要 在C#中&#xff0c;TaskScheduler是一种非常有用的功能&#xff0c;它允许您在指定的时间或间隔内执行任务。TaskScheduler是一个抽象类&#xff0c;它提供了一个通用的方法来计划和执行任务。您可以使用TaskScheduler来调度多个任务&#xff0c;并且在多线程环境中控制它…

邮件自动推送技术如何实现?有哪些优劣势?

邮件自动推送怎么设置&#xff1f;如何评估邮件自动推送的效果&#xff1f; 邮件自动推送是一种高效的电子邮件营销和通信技术&#xff0c;它能够根据预设条件自动发送邮件给特定的收件人。AokSend将深入探讨邮件自动推送技术的实现原理和注意事项。 邮件自动推送&#xff1a…

【PostgreSQL】数据基石:PostgreSQL的数据类型与表结构设计

目录 核心数据类型深入探索 基础数值与文本类型 日期与时间类型 特殊与复合类型 JSON与HSTORE 表的创建、修改与管理 创建与修改表结构 索引与性能优化 约束与数据完整性 核心数据类型深入探索 PostgreSQL以其多样化的数据类型著称&#xff0c;不仅包括标准SQL数据类型…

使用可蒸发的电介质流体冷却IGBT

每天一篇行业发展资讯&#xff0c;让大家更及时了解外面的世界。 更多资讯&#xff0c;请关注B站/公众号【莱歌数字】&#xff0c;有视频教程~~ 电子系统的单相液冷却已经广泛应用了50多年。 流体广泛应用于不同的工业&#xff1a;电力电子中的介质油&#xff1b;企业服务器…

微软Win10 22H2六月更新补丁KB5039299来了!附完整更新日志

系统之家于6月26日发出最新报道&#xff0c;微软为 Windows 10 用户发布了六月的安全更新补丁KB5039299。22H2用户升级系统后&#xff0c;会发现版本号升至 19045.4598。此次更新针对影响任务栏上应用跳转列表、默认日语输入法编辑器等多个问题进行修复。接下来跟随小编看看此次…

红酒哲学:品味流转时光,探寻生活之深邃奥秘

在繁华的都市中&#xff0c;我们时常被各种声音和色彩所包围&#xff0c;追求着速度与激情。然而&#xff0c;在这喧嚣之中&#xff0c;总有那么一刻&#xff0c;我们渴望静下心来&#xff0c;品味一份不同的宁静与深度。这时&#xff0c;一杯雷盛红酒便成了我们与内心对话的桥…

免费分享:中国1:250万地质图(附下载方法)

中国1&#xff1a;250万地质图反映了中国区域地质构造面貌和基本特征&#xff0c;表示了中国区域地质的特色&#xff0c;地质编图的标准化程度较高&#xff0c;地质图的编制过程中充分采用了信息技术&#xff0c;反映了地质调查与科研的若干新进展与认识。 数据简介 本数据为空…

lmdeploy部署chatglm3模型并对话

lmdeploy部署chatglm3模型并对话 环境准备创建虚拟环境安装组件下载模型 chat启动模型并对话启动成api_server服务并对话启动成gradio服务 环境准备 使用30% A100 来运行chatglm3模型&#xff0c;采用lmdeploy来启动。 创建虚拟环境 # 创建虚拟环境 conda create -n langcha…

node初始化设置(简单高效)

npm config set prefix "E:\nodejs\node_global" npm config set cache "E:\nodejs\node_cache" 我比较喜欢实用nrm&#xff0c;所以直接指定了nrm的路径

中国历史气象灾害预警数据集

中国历史气象灾害、预警风险区数据&#xff0c;包括&#xff1a;雷暴预警、大雾预警、洪涝风险、地质灾害趋势预测分区、山洪风险、森林火险、暴雨范围、大雨范围、地质风险、高温风险、低温冻害灾情、低温冷害和雪灾等。属性表包括各预警类型、具体时间、时效等。数据从国家突…

【八股系列】探索响应式布局的奥秘:关键技术与实战代码示例

&#x1f389; 博客主页&#xff1a;【剑九 六千里-CSDN博客】 &#x1f3a8; 上一篇文章&#xff1a;【为什么组件中的 data 必须是一个函数&#xff0c;然后 return 一个对象&#xff0c;而 new Vue 实例里&#xff0c;data 可以直接是一个对象&#xff1f;】 &#x1f3a0; …

使用 Elastic ELSER 和 Llama3 的 RAG(使用 Langchain)

在之前的文章 “使用 Llama 3 开源和 Elastic 构建 RAG”&#xff0c;我们讲到了如何使用 Liama3 来结合 Elastic ELSER 来进行 RAG。在今天的文章里&#xff0c;我们来详细使用一个 notebook 来展示如何在本地 Elasticsearch 部署中进行实现。 此交互式 notebook 使用 Langch…

人工智能在医学图像分割中的最新研究进展|顶刊速递·24-06-26

小罗碎碎念 今日推文主题——人工智能在医学图像分割领域中的最新研究进展。 今天的推文都来自同一个期刊——《Med Image Anal 》&#xff0c;最新的IF是10.7。 小罗观点 今天的六篇文献都是直接面向实际应用场景的&#xff0c;可以针对你自己的研究课题选择合适的文章进行阅读…

【学习】科大睿智解读ITSS通过后仍需关注和改进IT服务的原因

为了确保IT服务的质量和效率&#xff0c;很多企业拿到ITSS资质证书后&#xff0c;仍然需要持续关注和改进IT服务&#xff0c;科大睿智总结主要原因有以下几点&#xff1a; 1、随着企业发展业务和市场行情的变化&#xff0c;可能涉及到运维服务中新的业务流程、技术需求或者用户…

机器学习算法(三):支持向量机(SVM)的sklearn调用

文章目录 前言一 理论1 sklearn中的核函数形式二、sklearn调用1 svm.SVC() 接口说明三 、具体示例1、简单的线性SVM例子 --- 不同C值的影响(1) 数据集(2) svm sklearn调用2、高斯核函数的SVM --- 非线性分类(1) 数据集(2) 高斯核函数的SVM3、sklearn调参技术--网格搜索…