Restic + systemd Timer + OSS 做数据库备份指南

在资源有限的情况下,很多开发者通常是单机服务器,那么如何做数据备份就成了一个问题。 数据库备份看起来是一件简单的事情:定时导出数据库,将备份文件上传到对象存储,需要时再下载恢复。 但真正放到生产环境中,会遇到不少问题: 数据库正在写入,直接复制数据文件是否会产生不一致? 数据库备份文件越来越大,如何减少存储空间和上传流量? 服务器意外关机,错过的定时任务能否自动补执行? 备份文件存放在 OSS 或 R2 中,如何保证数据安全? 备份任务显示成功,是否意味着数据库真的可以恢复? 本文介绍一套基于 Restic + systemd Timer + 对象存储 的自动化数据库备份方案。 数据库以 PostgreSQL、MySQL 和 Redis 为例,远程存储分别使用 Cloudflare R2 和阿里云 OSS。通过数据库原生工具生成备份文件,再交给 Restic 进行加密、去重和快照管理,最后利用 systemd Timer 定时执行。 这套方案适合单机或少量 Linux 服务器上的数据库备份,也可以作为进一步建设企业备份体系的基础。 一、整体架构与技术选型 1.1 整体架构 整个备份流程分为四个部分: 数据库备份:使用数据库原生工具生成一致性备份文件。 本地暂存:将备份文件写入本地临时目录,并进行完整性检查。 Restic 备份:对备份文件进行加密、数据去重和 Snapshot 管理。 对象存储:将 Restic 仓库保存到 Cloudflare R2 或阿里云 OSS。 整体架构如下: systemd Timer | v 数据库备份脚本 | +------------+------------+ | | | v v v PostgreSQL MySQL Redis pg_dump mysqldump BGSAVE | | | +------------+------------+ | v 本地备份目录 | v Restic +--------+--------+ | | v v Cloudflare R2 阿里云 OSS Restic 仓库 Restic 仓库 这里需要特别说明:Restic 不是数据库备份工具,而是负责备份文件的存储和生命周期管理。...

2025年11月07日 · 10 min · Leanku

Restic 备份工具实战:从入门到服务器自动化备份

服务器运行久了,总会积累越来越多的重要数据:网站代码、数据库备份、上传文件、配置文件、日志以及各种业务数据。 这些数据平时可能不会引起太多关注,但一旦遇到磁盘损坏、误删除、服务器被攻击或者系统迁移,能不能快速恢复就显得非常重要。 很多人会使用 tar 打包,再通过 scp 或 rsync 上传到另一台服务器。这种方式虽然简单,但随着数据量增加,会逐渐暴露出一些问题: 每次都要处理大量文件,备份耗时较长。 多次备份会产生大量重复数据,占用存储空间。 缺少统一的历史版本管理。 需要自己编写脚本处理备份保留和清理。 备份文件缺少统一的加密和完整性检查机制。 如果希望有一套更完善的备份方案,可以了解一下 Restic。 Restic 是一款开源、跨平台的备份工具,支持增量备份、数据去重、加密存储和多种存储后端。通过它,我们可以用相对简单的命令,为 Linux 服务器建立一套自动化备份方案。 本文将从实际使用出发,介绍 Restic 的安装、配置、备份、恢复和自动化运维。 一、Restic 是什么? Restic 是一款使用 Go 语言开发的开源备份工具,支持 Linux、macOS、Windows 等操作系统。 它的设计目标比较明确:让备份过程尽可能简单,同时保证备份数据的安全性和存储效率。 与传统的文件打包方式相比,Restic 有几个比较重要的特点。 1. 增量备份与数据去重 Restic 不会在每次备份时都重新上传所有文件。 它会分析文件内容,将数据拆分成不同的数据块,并通过内容识别和去重机制,复用仓库中已经存在的数据。 例如,服务器第一次备份了一个 10 GB 的目录,第二天只修改了其中一部分文件,那么第二次备份通常只需要保存新增或发生变化的数据块。 这样可以减少重复数据的传输和存储开销。 2. 自动加密 Restic 在保存数据之前会进行加密。 备份仓库中的文件内容、文件名等信息不会以普通明文形式直接暴露。即使备份数据存储在远程服务器或对象存储中,也不意味着存储服务提供商能够直接读取备份内容。 需要注意的是,加密密码非常重要。如果丢失了访问仓库所需的密钥或密码,又没有其他可用密钥,就可能无法恢复数据。 3. Snapshot 快照管理 Restic 使用 Snapshot(快照)记录某个时间点的文件状态。 例如: 周一备份了一次。 周二修改了配置文件,再备份一次。 周三误删了一个目录。 即使当前服务器上的文件已经发生变化,也可以选择周一或周二的快照进行恢复。 这意味着 Restic 不只是保存一份文件副本,还能帮助我们管理历史版本。 4. 支持多种存储后端 Restic 不局限于本地磁盘,可以将备份保存到多种存储位置: 本地目录 SFTP 服务器 HTTP REST Server Amazon S3 MinIO Backblaze B2 Microsoft Azure Blob Storage Google Cloud Storage 其他兼容存储或通过 rclone 接入的服务 因此,我们可以根据实际环境选择备份目标。...

2025年11月03日 · 5 min · Leanku