Redis如何定时备份RDB文件到远程服务器?

阿萱吖_6979

阿萱吖_6979

2026-08-24

1014人浏览

原创

不能只靠save或bgsave完成备份,因二者仅生成无时间戳、不跨机、不清理旧文件的本地快照;需结合crontab调用脚本实现触发快照、等待完成、带时间戳拷贝校验、上传及定期清理。

redis如何定时备份rdb文件到远程服务器?

不能只靠 SAVE 或 BGSAVE 命令就认为备份完成了——它们只生成本地快照,不带时间戳、不跨机、不清理旧文件,更不会自动上传到远程服务器。

为什么直接 crontab 调用 BGSAVE 不够用

很多脚本只写 redis-cli bgsave 就以为万事大吉,但实际会遇到这些问题:

  • BGSAVE 成功后,dump.rdb 仍留在 Redis 的 dir 目录(如 /var/redis/6379/),同名覆盖,无历史版本
  • 没做原子拷贝,若恰好在 cp 过程中 BGSAVE 正在写入新 RDB,可能复制出损坏文件(虽然 Redis 用临时文件 + rename 保证原子性,但外部 cp 仍需避开写入窗口)
  • 没验证 RDB 文件是否可读,cp 完就走,结果传了个空文件或截断文件过去
  • 没处理 SSH 密钥、权限、路径不存在等远程传输失败场景,crontab 日志里只看到 scp: Connection refused 却没人发现

如何安全地定时拷贝并上传带时间戳的 RDB

核心是三步:触发快照 → 等待完成 → 拷贝+重命名+校验 → 上传。关键不是“立刻 cp”,而是等 BGSAVE 真正结束。

Redis Skill - 高性能缓存管理
Redis Skill - 高性能缓存管理

Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。

下载
  • 先用 redis-cli bgsave 触发,再用 redis-cli lastsave 拿到上一次成功快照的 Unix 时间戳,轮询对比确认完成(避免 sleep 2 这种不可靠等待)
  • 用 date +%Y%m%d%H%M%S 生成唯一文件名,例如 dump-20260713110522.rdb,避免覆盖
  • 拷贝后立即执行 redis-check-rdb /path/to/copy.rdb,返回非 0 就中止上传,防止传坏文件
  • 上传用 rsync -avz --remove-source-files 比 scp 更稳妥:支持断点续传、失败不删源、可加 --timeout=30
  • 远程目标路径建议按日期分层,如 user@backup-server:/backup/redis/2026/07/13/,方便按月归档和清理

crontab 和脚本怎么写才不出错

常见错误是把所有逻辑塞进一行 crontab,或忽略 shell 环境差异(crontab 默认 $PATH 极简)。正确做法:

  • crontab 只调用完整路径的脚本:0 * * * * /usr/local/redis/copy/upload_rdb_hourly.sh,不写 sh 前缀
  • 脚本开头必须声明解释器和环境:#!/bin/bash + export PATH="/usr/local/bin:/usr/bin:/bin"
  • Redis 配置里要明确 dir 和 dbfilename,别依赖默认值;用 redis-cli CONFIG GET dir 和 CONFIG GET dbfilename 动态获取,而非硬编码 /var/redis/6379/dump.rdb
  • 远程用户需提前配置免密 SSH(ssh-copy-id),且远程目录存在、有写权限;脚本里用 mkdir -p 创建父目录,但不要用 sudo —— crontab 以 redis 用户运行,不该提权
  • 每小时备份保留 48 份,但清理逻辑放在上传之后,避免因网络失败导致误删本地最新副本

真正麻烦的不是写脚本,而是验证上传后的 RDB 能否被 redis-check-rdb 读通、能否在另一台机器上用 redis-server --test-memory 加载成功——这些必须定期抽样测,不能只看 crontab 日志里有没有报错。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

860

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2572

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

856

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

769

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

394

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2316

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4272

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

687

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习