Skip to content

升级、备份与恢复 ​

升级包含应用版本、数据库结构、基础数据和运行配置的变化。先记录当前状态,再在隔离环境演练;当前 CLI 没有通用 backup、restore 或自动 rollback 命令。

备份清单 ​

内容默认位置或来源恢复时的作用
PostgreSQLhohu-pgdata 卷或外部数据库业务数据、账号、授权与迁移版本
公开与私有文件部署目录 uploads、private_uploads图片、导入导出文件和业务附件
部署配置.hohu/deploy/.env 与自定义 override连接、密钥、版本与服务拓扑
应用与镜像版本IMAGE_TAG、镜像 ID/摘要、源码提交与恢复后的数据库匹配
证书与自动化配置实际证书及受控运维配置恢复入口与后续维护
Redis / 监控数据对应持久卷或外部服务按恢复目标处理会话、短期状态和历史监控

保管 SECRET_KEY 等原密钥;加密保存的 Provider 或邮件凭据不能靠新生成的密钥解密。数据库快照与文件备份应处于可对应的业务时间点,备份保存到独立位置并验证可读。

数据库可使用 PostgreSQL 的逻辑备份或数据库服务商快照。pg_dump 不包含数据库角色等集群全局对象,需要单独规划;不要把运行中的数据目录简单复制当作一致备份。具体方式见 PostgreSQL 备份说明。

升级步骤 ​

  1. 记录 CLI、镜像或源码版本,以及数据库当前 Alembic revision;查阅更新说明。
  2. 在隔离环境恢复备份,演练目标版本迁移和功能验证。
  3. 安排维护窗口,停止入口写入及相关后台任务,完成最后一份一致备份。
  4. 选择下表中的更新路径;检查迁移与种子同步退出结果。
  5. 验证登录、普通账号权限、租户、设置、文件、任务和 AI,再恢复业务流量。
部署方式更新步骤
已发布镜像修改部署配置中的目标镜像/标签,运行 hohu deploy pull
独立组件源码仓库分别更新配套源码,运行 hohu build、hohu deploy
可拉取的项目根 Git 仓库满足前提后可用 hohu deploy upgrade

pull 会迁移并启动应用,不是只下载镜像。upgrade 只在项目根执行一次 git pull,随后构建、停止与重新部署;不会逐个更新独立组件仓库,也不是无停机升级。完整前提见 CLI 部署。

不要用 --no-migrate 跳过版本必需的结构或种子更新。独立 migrate 的外部依赖限制见迁移参考。

支持的数据库起点 ​

当前迁移支持空库和 v0.1.4 发布边界 bf244f9a8b76。更早版本先沿对应旧发布链升级到该边界,再切换当前版本。曾运行压缩前实验迁移的开发库不属于自动升级范围。

迁移失败时保留错误和当前 revision;不能用 stamp head 把版本号伪装为已升级。准确 head 以匹配版本的 Alembic 输出为准,维护说明见后端仓库 docs/DATABASE-MIGRATIONS.md。

恢复步骤 ​

  1. 保持维护状态,保存失败日志,判断是否已经写入新版本数据。
  2. 在隔离目标恢复配套数据库、文件、原密钥和应用版本;避免直接覆盖唯一的原始备份。
  3. 按恢复目标处理 Redis 的旧会话和待确认任务,不将过期的执行上下文视为仍有效。
  4. 验证账号、权限、数据数量、文件引用及任务,确认后切换流量并恢复写入。

切回旧镜像不会自动恢复数据库。downgrade 可能删除表或字段,不能代替经过演练的数据恢复。记录恢复点与可能的数据差异,避免将旧文件配上新数据库继续运行。