跳转到主要内容

数据目录、备份与升级

最近更新:

备份数据库与密钥,并单独管理项目工作目录。

备份需要同时保留 AGW 的配置和记录、加密密钥,以及项目文件。只复制安装目录,或只保存代码仓库,都可能遗漏恢复服务所需的数据。

开始前,确认实际数据库、数据目录和各 Project 工作目录的位置;下面的默认路径仅用于帮助定位,以运行中的配置为准。

数据范围

AgwDataDir 默认 ~/agw,Docker 使用 /data。路径支持 ~,其他相对路径相对进程工作目录解析。默认的 SQLite 数据库文件是 <AgwDataDir>/database/agw.db,Docker 中为 /data/database/agw.db。

需要一起保存:

  • 数据库,包括 setting、api_token、会话和执行记录。
  • 数据目录中的 keys/ 和 skills/。
  • 部署配置及其秘密引用,实际秘密通过安全存储备份。
  • 各 Project 主目录与附加目录中的业务文件,使用独立文件备份策略。

日志目录独立于数据目录;日志和临时文件不属于认证恢复必需数据。丢失 Data Protection 密钥可能使已保护凭据无法读取。

先列出备份清单

记录数据库位置、AgwDataDir 的实际值、各 Project 的目录及当前程序版本。项目使用文件型 Memory 时,还要包含主目录下的隐藏目录 .agw/memory/;数据库型 Memory 随数据库保存。表单默认的主目录 ~/.agw/<项目文件夹名> 和 Server 默认的 ~/.agw/projects/{projectId:N} 都位于运行 Server 的账号的主目录下,不在 AgwDataDir 中;Docker 中也不在 /data 卷内,需要另外挂载并备份。

备份数据库和文件前,先等待任务结束或中断任务,避免备份期间仍有写入。SQLite 的简单做法是停止 Server 后复制数据库及相关文件;PostgreSQL 使用自己的备份工具。数据目录和项目目录可能在不同位置,应逐项核对,不能假定它们都在 /data 内。

升级顺序

  1. 阅读目标 Release 说明,记录当前镜像或安装包版本。
  2. 停止全部旧版 Standalone、Control Plane 和 Data Plane 进程,取得一致性备份:SQLite 简单部署可在停止后复制文件;PostgreSQL 使用数据库自身的备份机制。
  3. 应用新版本对应数据库的迁移(SQLite 或 PostgreSQL 其中一套)。已初始化的 Server 正常启动时不会自动执行迁移,只有首次 Setup 会执行;源码部署可使用 Development Guide 中按数据库区分的命令。
  4. 更新 Server 与客户端,保留数据、Data Protection 密钥和目录挂载,再启动新版本。新版 Host 在接受请求和启动 Worker 之前,会检查并升级正在进行的执行记录;某条记录无法解密或验证失败时,Host 启动报错,需要修正数据后重新启动。
  5. 验证初始化状态、登录、Project 文件和一个小任务;分离部署还需验证 worker 与 Job。

AGW 在 1.0 前的升级可能包含 schema 变更。回滚时需要使用彼此兼容的程序版本、数据库备份和密钥备份。

恢复验证

优先在隔离环境验证备份能恢复,确认凭据可解密、文件路径可见。更改数据或日志根目录需要重启并自行迁移文件,不会自动搬运已有数据。

实现与参考