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

定时任务工具推荐

在 Linux 服务器运维和日常开发中,定时任务是一个非常常见的需求。 例如: 每天凌晨执行一次数据库备份。 每隔 10 分钟清理过期文件。 每周定期检查服务器磁盘使用情况。 每天凌晨生成业务统计报表。 定期同步文件、刷新缓存或清理日志。 很多人的第一反应是使用 crontab。它简单、成熟,几乎所有 Linux 运维人员都接触过。 但 Cron 并不是唯一的选择。随着 Linux 发行版逐渐采用 systemd,systemd Timer 也成为一种值得关注的定时任务管理方式。 除此之外,还有 Anacron、at、APScheduler、Airflow、Kubernetes CronJob 等工具,可以满足不同场景下的任务调度需求。 本文将介绍常见的定时任务工具,并重点对比 Cron 和 systemd Timer,帮助你根据实际需求选择合适的方案。 一、常见的定时任务工具有哪些? 定时任务工具虽然很多,但它们解决的问题并不完全相同。 有些工具负责在指定时间执行命令,有些负责在应用程序内部调度任务,还有一些则负责管理跨服务器的复杂工作流。 按照使用场景,可以大致分为三个类别。 1. Linux 系统级定时任务 这类工具主要用于在 Linux 系统中定期执行 Shell 命令或脚本。 工具 主要特点 适用场景 Cron 基于时间表达式执行周期任务 日常服务器定时任务 systemd Timer 与 systemd 服务管理集成 系统级任务管理 Anacron 支持错过执行时间后补执行 可能长期关机的机器 at 在指定时间执行一次任务 一次性延迟任务 其中,Cron 和 systemd Timer 是 Linux 服务器中最值得了解的两种方案。 2. 应用程序级定时任务 如果定时任务属于某个应用程序,可以考虑使用应用内部的调度机制。...

2025年11月03日 · 6 min · Leanku