本页由 AI 工具参考代码编写,尚未经过人工审核,内容仅供参考。如果无法解决问题或需要协助部署,可邮箱联系:kuohu233@qq.com
备份策略
数据是 AstraSchedule 系统最重要的资产——课表、作息、科目、班级配置一旦丢失,需要大量时间重新录入。本章介绍三种部署方案下的完整备份策略。
备份什么
AstraSchedule 需要备份的数据包括:
- 数据库:所有班级的课表、作息、科目、配置、自动任务
- 服务端配置文件:
config.toml(API Key、Token、数据库连接信息) - 管理端源码配置:
src/global.js(后端地址)
数据库是最关键的部分,必须定期备份。配置文件和源码配置变动较少,但建议在首次部署后备份一份。
🔰 极低成本方案(SQLite 备份)
极低成本方案使用 SQLite,数据库文件存储在函数计算实例的 /tmp/data/astra.db。函数计算实例在无请求时会被回收,/tmp 目录中的数据可能丢失。
方法一:管理端导出(推荐,最简单)
- 浏览器打开管理端(
https://admin.你的域名.com) - 进入「实用工具」→「完整导出」
- 点击导出,浏览器会自动下载一个 JSON 备份文件
- 将 JSON 文件保存到安全位置
💡 导出的 JSON 文件是完整的数据快照,可以直接通过「完整导入」恢复到任何 AstraSchedule 后端,支持跨数据库类型迁移(SQLite → MySQL 或 MySQL → SQLite)。
方法二:手动复制数据库文件
如果你有函数计算的 SSH 或终端访问权限(如使用了预留实例):
备份频率建议
🏫 内网方案
SQLite 文件备份
如果使用 SQLite,直接复制数据库文件即可完成备份。
手动备份
crontab 定时备份
systemd timer 定时备份(推荐)
systemd timer 比 crontab 更可靠,且日志集成到 journald。
创建备份脚本 /opt/astra/scripts/backup.sh:
创建 systemd service /etc/systemd/system/astra-backup.service:
创建 systemd timer /etc/systemd/system/astra-backup.timer:
启用定时器:
MySQL 备份
如果使用 MySQL,使用 mysqldump 导出:
管理端导出(双重保险)
无论使用哪种数据库,强烈建议额外通过管理端定期导出 JSON 备份。管理端导出的 JSON 文件格式统一,可随时恢复到任何数据库类型的后端。
🚀 高并发方案(MySQL 自动备份 + 管理端双重保险)
RDS 自动备份
阿里云 MySQL Serverless(RDS)提供自动备份功能。
- 登录阿里云 RDS 控制台
- 选择你的实例 → 备份恢复
- 确认以下设置:
管理端导出(双重保险)
RDS 自动备份已经比较可靠,但建议额外通过管理端导出 JSON 备份作为第二重保障:
- 每月手动导出一次 JSON 备份
- 学期初录入数据后立即导出
- 进行大规模配置修改前导出
- 将导出的 JSON 文件保存到本地或云存储(如阿里云 OSS、OneDrive)
💡 JSON 格式备份文件不受数据库类型限制。即使阿里云 RDS 不可用,你也能将备份导入到新的 SQLite 后端快速恢复服务。
备份文件保存策略
保留策略
保存位置建议
- 本地保存:服务器本地磁盘
- 异地保存:复制到另一台机器或外接硬盘
- 云端保存:上传到云存储(OneDrive、阿里云 OSS 等)
推荐使用 3-2-1 备份原则:
- 3 份备份副本
- 2 种不同存储介质
- 1 份异地存储
对于大多数学校场景,本地保存一份 + 云端保存一份即可满足需求。
恢复流程
从 JSON 备份恢复(通用方式)
- 确保后端正常运行
- 浏览器打开管理端
- 进入「实用工具」→「完整导入」
- 选择之前导出的 JSON 备份文件
- 确认导入
- 导入完成后检查各班级配置是否正确
⚠️ 导入操作会覆盖当前数据库中的所有数据。确认无误后再执行。
从 SQLite 文件恢复(内网方案)
从 MySQL 备份恢复
从 RDS 备份恢复
- 登录阿里云 RDS 控制台
- 选择实例 → 备份恢复
- 选择目标备份 → 恢复
- 恢复到当前实例或新实例
- 验证数据完整性