数据库与备份
NodeFlare 同时支持 SQLite 与 PostgreSQL,两者可在线迁移。相关操作均在后台「数据库」页面完成。
历史保留与空间
后台「数据库」页面支持查看占用、回收空间、导出 / 恢复 ZIP 备份,以及 SQLite ↔ PostgreSQL 在线迁移。
在「外观与展示」设置历史保留天数,默认 30 天,范围 1~3650 天。负载指标在入库时已按 1 分钟汇总;节点的「历史写入间隔」控制持久化批次,不是历史点的时间粒度。后台维护再逐步汇总较旧的负载和延迟历史:
| 数据年龄 | 负载指标 | 延迟记录 |
|---|---|---|
| 最近 2 小时 1 分钟 | 1 分钟 | 保留原始探测时间戳,为补报去重留出时间 |
| 2 小时 1 分钟~7 天 | 1 分钟 | 1 分钟 |
| 7~30 天 | 5 分钟 | 5 分钟 |
| 30 天以后 | 1 小时 | 1 小时 |
| 超过保留天数 | 自动删除 | 自动删除 |
聚合不会补造原本没有的采样。探测间隔较粗时也不会变成更细的真实数据;长期图表展示的是汇总结果。调大历史写入间隔主要减少持久化频次,不会按比例减少分钟历史行数。维护分批进行,缩短保留天数后不会立刻在同一秒清空所有过期记录。
数据库大小取决于节点数量、延迟任务数量、采样间隔、保留时长和主题等数据,不能仅按「30 天」给出固定容量。ZIP 备份大小、数据库文件和 SQLite WAL 临时日志也不是同一个口径。
后台「数据库」显示数据库占用和可回收空间,并提供「回收空间」。删除记录不一定立刻缩小文件;回收可能占用较长时间并影响读写,建议先备份、选低峰期操作。不要在服务运行时手动删除 SQLite 的 -wal 或 -shm 文件。
备份与恢复
一键备份 / 恢复(ZIP)。备份包含设置、节点、历史、通知、主题、任务与安全配置。出于安全考虑,备份操作需 TOTP 或密码验证。
- 更新、迁移或批量删除前,点击「导出备份」,完成身份验证并保存 ZIP。
- 恢复前另存一份当前备份;恢复会替换当前数据库中的业务数据和备份携带的主题内容,不是追加导入。
- 点击「恢复备份」选择 NodeFlare 导出的 ZIP,按提示验证身份,等待结果;不要解压后随意重新打包。
- 恢复后检查节点数量、通知、主题和 Agent 是否重新上报,必要时重新登录。
备份应另外保存到其他机器,并定期在隔离环境验证可恢复性。配置文件、反向代理证书和系统服务定义不由数据库备份替代,迁移主机时另外保管。
Telegram 与 Webhook 配置也随备份保存,包括 URL、请求头、请求体里的密钥;页面不回读明文不代表备份中没有凭证。请勿公开分享备份,恢复后可在通知设置中发送测试确认渠道可用。
导出备份不包含管理员会话、临时 Agent 安装令牌或通知渠道的发送回执。未完成通知仍在备份中,恢复后可能重新投递;SQLite ↔ PostgreSQL 在线迁移则保留发送回执,避免重复发送已经成功的渠道。
大小限制:
| 限制项 | 上限 |
|---|---|
| 备份 ZIP | 512 MiB |
| 解压后总大小 | 4 GiB |
| 条目数 | 16384 |
| 单个主题文件 | 32 MiB |
结构升级
后端启动时自动执行数据库结构迁移,无需手动建表或修改迁移编号。更新前先导出备份;不要把新版本数据库直接交给任意旧版二进制运行。
在线迁移
SQLite ↔ PostgreSQL 迁移注意事项:
- 迁移会覆盖目标库并自动更新连接串;
- 保留 Agent Token;
- 重启服务后生效;
- 完成复制后暂停业务写入,需按页面提示重启以切换数据库并恢复写入,不要完成后长期放置不管;
- 使用
--database启动时,在线迁移不可用,见配置。