redis使用rdb文件无法恢复数据
1.情况说明
(1)我使用docker部署的redis容器(单节点),由于服务器资源缩减,要将单独部署在服务器上的redis迁移到其他服务器上 (2)源服务器192.168.1.5,目标服务器192.168.1.6 (3)redis版本 6.0.12 (4)docker版本 19.03.8
2.执行步骤
(1)首先在源服务器192.168.1.5上,登陆redis
#登陆redis容器 docker exec -it redis bash #进入redis指定库 redis-cli -h 127.0.0.1 -p 6379 -a 123456 -n 6 #在后台执行数据落盘任务,不影响父进程 bgsave
(2)查看rdb数据保存目录
#进入redis指定库 redis-cli -h 127.0.0.1 -p 6379 -a 123456 -n 6 #查看rdb保存目录 config get dir
(3)进入到指定目录,拷贝rdb文件到目标服务器
如:我的rdb保存目录为/data,rdb文件dump.rdb
(4)在目标服务器(192.168.1.6)上部署好相同版本(6.0.12)的redis容器
(5)在目标服务器(192.168.1.6)进行数据恢复
-
正常恢复步骤:
- 将源服务器192.168.1.5服务器上的dump.rdb拷贝到目标服务器192.168.1.6上rdb存放位置下/data下,重启redis容器即可自动恢复数据
-
遇到的问题:
- 重启redis后,从源redis拷贝过来的dump.rdb被覆盖,有如下两个原因:
- 我开启了aof,数据恢复时,优先恢复aof文件,我的aof没有数据,从而会覆盖rdb的数据
- redis在启动时,会自动创建一个dump.rdb文件,覆盖咱们要恢复数据的dump.rdb文件,导致有数据的rdb文件被覆盖
-
解决方法:
- 关闭aof,如果环境上有要求打开aof,你可以等数据恢复了,然后使用命令临时打开aof,并在redis.conf中打开aof,但千万别重启,等过段时间aof写入数据之后,下次重启就可以直接加载aof或者将数据同时保存到aof,不至于覆盖都市数据
- 恢复rdb数据时,先停掉redis容器(docker stop redis),然后修改redis.conf配置文件中的rdb文件名称,默认是dump.rdb,修改为dumpfile.rdb(文件名自定义),保存之后重启redis容器(docker start redis),就可以将rdb的数据恢复到目标服务器上的redis了
3.参考文档
https://blog.csdn.net/qq_40885034/article/details/116424269?sharetype=blog&shareId=116424269&sharerefer=APP&sharesource=m0_46093787&sharefrom=link
分类:
redis
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)