本页由 AI 工具参考代码编写,尚未经过人工审核,内容仅供参考。如果无法解决问题或需要协助部署,可邮箱联系:kuohu233@qq.com
备份与复制
AstraSchedule 提供完整的数据库备份和配置复制功能,帮助管理员安全地保存数据、在不同数据库之间迁移、以及在班级之间快速复用配置。
完整备份导出
完整备份导出功能将数据库中全部配置数据导出为一个 JSON 文件,涵盖以下七张数据表:
导出的 JSON 文件包含以上七张表的结构化数据,采用统一的 JSON 格式,可读性强,便于必要时手动编辑。在管理端的"实用工具"页面点击"完整导出"即可下载备份文件。
完整备份导入
导入备份文件时,系统提供两种导入模式:
- 覆盖模式(Overwrite):对于备份文件中的每条记录,如果数据库中已存在相同主键的记录,则更新该记录的内容。适用于需要完整替换现有配置或合并新旧数据的场景。
- 跳过模式(Skip):对于备份文件中的每条记录,如果数据库中已存在相同主键的记录,则忽略该条记录不做修改。适用于仅导入数据库中不存在的增量数据的场景。
导入过程在一个数据库事务中执行,保证全部七张表要么全部成功导入,要么全部回滚,不会出现部分导入的中间状态。在管理端的"实用工具"页面选择备份文件、指定导入模式后上传即可。
跨数据库迁移
备份导出导入机制是实现跨数据库类型迁移的标准途径。由于导出的 JSON 文件是与数据库类型无关的通用格式,可以:
- 从 SQLite 数据库导出完整备份 JSON。
- 在服务端配置中将数据库类型从
sqlite切换为mysql(修改config.toml中的db.type和相关连接参数)。 - 重启服务端,此时新的 MySQL 数据库为空。
- 在管理端导入之前导出的备份 JSON,选择覆盖模式。
反之亦然(MySQL 迁移到 SQLite)。此过程不依赖任何数据库特定的导出工具,完全由系统自身处理。
配置复制
管理端的"实用工具"页面提供班级间配置复制功能。复制操作涵盖以下内容:
- 科目配置(简称、全称映射)
- 作息时间表
- 课表数据
- 通用设置(横幅、天气、倒计时等)
操作步骤:
- 选择来源班级:通过级联下拉框选择学校、年级、班级(需已存在完整配置)。
- 输入目标班级标识:手工输入目标班级的完整标识(格式如
39/2023/2)。 - 确认来源与目标不相同后,执行复制。
复制操作由服务端处理,确保所有相关配置表的数据一致复制。此功能极大简化了新建班级时的配置工作——只需在一个班级中配置完毕,即可一键复制到所有同年级班级,之后再针对各班差异微调即可。复制成功或失败均有明确的提示信息。
手动备份 SQLite
对于使用 SQLite 数据库的部署场景(包括传统部署和 Serverless 部署中的 SQLite 模式),可以进行文件级的手动备份。SQLite 数据库为单个 .db 文件(默认路径由 config.toml 中的 db.sqlite.path 指定),直接复制该文件即可完成备份:
手动备份适用于自动化运维脚本、定时任务等场景。由于 SQLite 文件在服务端运行时可能正在被写入,建议在备份前先停止服务端,或使用支持文件快照的文件系统。
对于使用 MySQL 的部署场景,建议使用管理端的完整备份导出功能或 MySQL 自身的 mysqldump 工具。