备份与恢复
平台内置备份恢复功能的操作方法、备份包内容与不包含的对象、自动备份与保留策略、恢复预检与流程,以及需要自行备份的文件与换机重建清单。
概述
平台内置「备份恢复」功能,把配置库中的业务数据与关键文件目录,按同一时间点打成一个 zip 备份包,并支持在页面上预检、恢复。仅管理员可用。
备份包只覆盖平台数据。程序本身(jar)、数据库连接配置、JDBC 驱动、插件等不在包内,需要另行备份,见下文「需要自行备份的对象」。
功能入口
「系统 > 智能运维 > 备份恢复」。Sight Wall 中入口同名。页面顶部的按钮:「立即备份」「上传备份包」「备份设置」「刷新」。列表列:时间、类型(手动、自动、恢复前、上传、已发现)、备份包、大小、版本、schema、状态、操作人;行操作:下载、恢复、删除。
备份包内容
包含
| 类别 | 说明 |
|---|---|
| 配置库数据 | 用户与组织、权限、报表与大屏模板及版本、参数与查询表单、公共数据集、数据源连接(含加密凭据)、系统设置、定时任务定义、邮件与 Webhook 配置、MCP 访问令牌与登记信息、续打进度等 |
| 字体 | data/fonts |
| AI 提示词覆盖 | data/ai-docs |
| 大屏素材 | data/work/screen-assets,仅 Sight Wall |
| 模块附件目录 | 其他模块登记的附件目录(如启用表单模块后的附件目录) |
不包含
| 对象 | 原因与处理 |
|---|---|
| 授权信息(环境标识、授权内容、时钟与绑定状态) | 授权与环境绑定,不随包迁移,恢复时保持本机现状。换机重建需重新签发授权 |
| 集群令牌、节点身份登记 | 运行期数据,恢复后自动重建 |
| 各类日志(审计、登录、报表操作、错误日志等)、定时任务执行日志、邮件与 Webhook 发送记录 | 日志类数据不备份 |
| 登录锁定、一次性令牌、密码历史、分布式锁、外部数据集临时数据 | 瞬态数据,恢复旧状态反而有害 |
| 备份台账本身 | 恢复时保持当前台账不变 |
| 演示数据 | 不进包;需要时在「系统 > 系统设置 > 示例数据」中从发行包重新导入 |
data/drivers(JDBC 驱动)、data/plugins(插件) |
未纳入本功能范围。恢复后数据源配置都在但驱动不在时,连接会失败 |
database.config、jar、缓存目录、日志 |
不属于平台数据 |
注意:备份包内含数据源凭据、AI 配置的密钥等敏感信息,拿到备份包基本等于拿到系统。下载前会弹出确认,下载操作会写入审计日志。请按机密文件保管。
操作步骤
手动备份
- 打开「备份恢复」页,点击「立即备份」。
- 页面显示任务进度,依次为「导出配置库」「打包文件资产」「写清单」。
- 完成后备份包出现在列表中,存放在备份目录(默认
<程序目录>/data/backups)。
备份先写入 .tmp 文件,完成后改名,因此列表中不会出现不完整的包。同一时间只能运行一个备份或恢复任务。
自动备份
系统内置一个名为「自动备份」的系统任务,属于分组「系统任务」,默认每天凌晨 1 点运行(Cron 表达式 0 0 1 * * ?),创建时启用。在「系统 > 定时调度」页可以查看它、切换「启用」状态或点击「执行」立即运行;系统任务不能编辑,也不能删除。
集群下该任务只会在一个节点执行。如果备份或恢复任务正在运行,本次自动备份会被跳过。自动备份产生的包在列表中类型显示为「自动」。
备份设置(保留策略)
点击「备份设置」:
| 项 | 说明 | 默认值 |
|---|---|---|
| 保留份数 | 最多保留的备份包份数 | 7 |
| 保留天数 | 备份包保留天数 | 30 |
| 占用上限 | 备份包总占用上限(MB) | 5120 |
| 存放目录 | 只读,显示当前备份目录,由 app.backup-dir 决定 |
<程序目录>/data/backups |
| 磁盘可用 | 只读,显示备份目录所在磁盘的可用空间 | 自动检测 |
三项中任一项超限就删除最早的包。保存后立即执行一次清理。恢复前自动生成的兜底包单独保留 3 份,不占上述配额。类型为「上传」和「已发现」的包是人主动放入的,不受保留策略自动清理。
备份包会增长到很大,系统盘放不下时,把 app.backup-dir 指向单独的数据盘,见 配置项参考。
下载与上传备份包
- 「下载」:确认提示「备份包含系统凭据,请按机密文件保管。确认下载?」后下载 zip。
- 「上传备份包」:选择 zip 文件上传。上传只是把包收进列表,不会执行恢复。文件校验清单后入账,缺少清单的 zip 会被拒绝,提示这不是本产品的备份包。备份包以原始数据流上传,不受表单上传大小限制,但会先检查备份目录剩余空间。
恢复
- 在列表中找到状态成功的备份包,点击「恢复」。
- 弹出「恢复备份」对话框,程序对该包做预检,逐项显示结果,见下表。
- 有「阻断」项时无法继续;有「警告」项时需要勾选「我已知晓,仍要继续」。
- 输入备份文件名以确认,点击「确认恢复」。预检令牌有效期 30 分钟,超时需要重新预检。
- 恢复期间页面显示任务进度。系统进入维护模式,普通用户暂时无法访问。
- 恢复完成后,阅读「恢复完成」对话框中的提示,重启服务(必须),再验证数据。
恢复流程依次为:恢复前自动备份当前状态(生成兜底包)、进入维护模式、恢复配置库、恢复文件资产、收尾。文件目录采用改名换入:原目录被改名为 .bak-<时间戳> 后再解包,失败时会改回。
恢复完成后必须重启服务,因为字体、驱动、插件、AI 配置与缓存都还在内存中。
注意:恢复会用备份包整体覆盖当前的配置库业务数据与文件资产,不可撤销。开始前自动生成的兜底包可用于回退。
恢复预检项
| 检查项 | 级别 | 说明 |
|---|---|---|
| 包格式 | 阻断 | 包格式版本必须受当前版本支持 |
| 产品 | 阻断 | 不能跨产品恢复:Sight Report 的包不能恢复到 Sight Wall |
| 迁移链 | 阻断 | 备份包与当前库的数据库迁移记录必须一致,不一致时提示哪一侧多了哪些迁移,需要先把产品版本对齐 |
| 完整性 | 阻断或警告 | 校验和不符则阻断;包内没有校验和则警告 |
| 磁盘空间 | 阻断 | 按包体大小的 2.5 倍预留兜底包与解包空间 |
| 加密密钥 | 警告 | 四个加密密钥的指纹与备份时不同时警告。恢复后数据源会连不上、AI 配置失效且不报错,需要先把环境变量设成与源机一致 |
| 环境标识 | 警告 | 备份包来自其他环境时提示。换机重建属正常情况 |
| 表覆盖 | 提示 | 包内缺少某些表时提示,这些表恢复后保持当前内容 |
| 任务冲突 | 阻断 | 有备份或恢复任务正在运行 |
退出维护模式
恢复成功后系统自动退出维护模式。恢复失败时系统会保持在维护模式,因为此时库的状态不确定。页面顶部会显示「系统处于维护模式」提示,确认数据无误后点击「退出维护模式」。维护模式下管理员仍能登录并使用备份恢复页。
需要自行备份的对象
| 对象 | 位置 | 说明 |
|---|---|---|
| 配置库 | 外接数据库 | 用数据库自带工具定期全量备份,尤其在升级前。这是回滚的依据 |
| 内置 H2 数据库 | data/work/db/ |
停服后复制整个目录 |
| 数据库连接配置 | data/work/database.config |
含加密后的数据库密码,按机密文件保管 |
| JDBC 驱动 | data/drivers/ |
备份包不含 |
| 插件 | data/plugins/、data/plugins-data/ |
备份包不含 |
| 加密密钥 | 环境变量 SIGHTDATA_*_KEY,或系统属性 |
记录在安全的地方,恢复与换机时要与源机一致 |
| 授权文件 | 服务商提供的授权文件 | 授权保存在配置库,但换机重建时需要重新签发 |
| 备份包 | 备份目录 | 定期复制到异地 |
换机重建清单
- 在新机器上安装同一版本的产品,JDK 21+,准备好配置库(新库或还原后的库)。
- 设置与源机一致的加密密钥环境变量。
- 通过初始化向导创建配置库结构与管理员,见 初始化向导与数据库准备。
- 在「备份恢复」页点击「上传备份包」,把备份包收进列表,再执行恢复。备份目录里手工拷入的包,只有在一次恢复收尾时才会被自动对账补进列表,因此请优先使用上传。
- 复制
data/drivers/与data/plugins/,重启服务。 - 授权因环境变化会失效,按 授权与许可 重新获取环境信息并导入新授权。
注意事项
提示:定期演练恢复流程,确认备份包可用且预检能通过。
注意:跨版本恢复要求迁移链一致。用旧版本生成的包恢复到升级后的系统,会在预检阶段被阻断。