Skip to content

数据库状态与迁移

查看数据库状态并执行迁移、备份与恢复。

Updated View as Markdown

目标

理解 Appaloft 数据库保存的内容和边界,并安全完成备份、迁移和恢复演练。

适用场景

  • 计划升级 Appaloft 前需要先备份状态。
  • 需要评估当前部署模式(本地优先状态 vs. 自托管数据库)是否适合团队规模。

前置条件

  • 对数据库(PostgreSQL 或内嵌 PGlite)有访问和备份权限。

输入与默认值

Appaloft 可以使用本地优先状态或自托管数据库,数据库保存的是控制面状态:项目、环境、部署记录、资源状态、运行历史和配置快照。应用代码和构建产物不应该只存在于数据库里——它们应该能从来源、Artifact 或运行时目标重新定位。

模式适用场景运维重点
本地优先状态(PGlite)单机、本地试用、便携安装备份本地数据目录,升级前停止写入
自托管数据库(PostgreSQL)团队共享、长期运行、服务器部署监控连接、磁盘、备份、迁移窗口和恢复演练

CLI 操作步骤:升级前备份

1. 升级前检查

确认当前版本、目标版本、数据库连接和迁移窗口。

2. 完成一次可恢复备份

备份应覆盖控制面状态、部署历史和必要的配置快照,不应导出明文 Secret;暂停会产生新部署记录的自动化。

3. 执行迁移

在维护窗口内运行迁移,观察迁移日志和 Appaloft 启动状态。不要同时更换数据库、升级 Appaloft 和重建服务器

4. 验证恢复

升级后检查项目列表、最近部署、环境变量快照、日志入口和访问地址状态,随机抽取一个最近部署,确认它仍然能展示状态和诊断摘要。

预期输出与状态

至少保留一份升级前备份和一份最近的自动备份。恢复演练应该验证 Appaloft 能启动、用户能登录、项目能列出、部署历史能打开——而不仅仅是数据库文件可以复制。

验证

参考上面第 4 步的验证清单;如果任何一项检查失败,应该视为恢复未完成,而不是”部分成功”。

回滚 / 恢复

回退到升级前版本前,先确认数据库迁移是否可逆,以及旧版本是否能读取当前状态——某些迁移是单向的,回退版本前必须先从升级前备份恢复数据库。

故障排查链接

进阶:整实例迁移

组织 Owner 可以把控制面数据库导出成一个经密码加密的 Artifact,并在导入前完成兼容性校验——用于整实例迁移到新硬件,或跨环境复制状态。Artifact 使用 AES-256-GCM 加密、独立 Salt 和认证校验和;密码只从标准输入接收,不会出现在任何查询结果中:

appaloft instance portability export-plan

printf '%s\n' "$APPALOFT_EXPORT_PASSPHRASE" | \
  appaloft instance portability export --output ./appaloft.instance --passphrase-stdin

printf '%s\n' "$APPALOFT_EXPORT_PASSPHRASE" | \
  appaloft instance portability import-plan ./appaloft.instance --mode merge --passphrase-stdin

merge 模式保留目标数据,并拒绝不兼容的冲突;replace 模式必须显式传入 --acknowledge-replace,Appaloft 会先创建回滚证据,再进入数据库事务,校验或导入失败时目标状态保持不变。源和目标必须使用相同的受支持 Schema 版本。用以下命令查看和清理 Artifact 元数据:

appaloft instance portability artifact list
appaloft instance portability artifact show <artifactId>
appaloft instance portability artifact delete <artifactId>

相关参考页面

Navigation

Type to search…

↑↓ navigate↵ selectEsc close