跳到主要内容
版本:Dev

备份与恢复

只有同时保存 PostgreSQL 数据,以及解释这些数据所需的密钥和配置,AISIX Enterprise 才能恢复。数据库备份缺少匹配的主密钥,会使加密凭据无法读取。配置文件没有匹配的数据库,也无法重建组织、资源或现有网关信任的证书颁发机构。

应将数据库、加密密钥、部署配置和软件版本视为同一个恢复集。请保留每项资产的匹配副本,将整个恢复集作为敏感数据保护,并在依赖它执行升级回滚或灾难恢复之前演练恢复流程。

选择恢复范围​

目标所需保护措施
恢复完整的 AISIX Enterprise 控制面同时备份完整 PostgreSQL 状态、匹配的密钥、部署配置和软件版本。
回滚升级在升级前立即创建恢复集。启动旧版控制面前,先恢复数据库。
迁移或复现单个组织使用组织备份与恢复。备份包只能恢复到新安装的控制面,不能替代完整部署备份。
控制面短暂中断期间保持网关服务配置离线韧性。网关快照缓存用于维持服务连续性,不是控制面备份。

保护恢复集​

使用以下资产构建恢复集,并将其存储和保留在部署故障域之外。

PostgreSQL 状态​

控制面数据库包含组织、环境、用户、模型、策略、加密凭据、投射到网关的配置、审计和用量数据,以及根证书颁发机构与网关证书账本。请备份整个数据库,不要只选择个别应用表。

使用 PostgreSQL 感知的备份方式,或与 PostgreSQL 协调一致的存储快照。不要把正在运行的数据库卷当作普通文件复制。备份必须同时保留 public、auth schema,以及 dp-manager 创建的 Kine 表。

对于外部数据库,请把连接角色、所有权和所需权限纳入数据库恢复计划。即使单库 dump 包含引用 cp_api_app 的授权,它也不会保留集群全局角色。请选择一种恢复策略:

  • 保留带有 NOSUPERUSER NOBYPASSRLS NOINHERIT NOLOGIN 属性的 cp_api_app,并恢复依赖该角色的所有权和权限语句;
  • 省略这些语句,让 cp-api 在启动时重新创建角色和授权。

两种角色契约请参阅外部数据库。AISIX 不提供数据库备份命令,也不会替代数据库平台负责的备份工具和保留策略。

控制面对用量、审计等持续增长数据的保留期,以及如何规划和维护数据库,请参见数据库运维。

加密与认证 Secret​

当前主密钥用于加密已保存的服务提供方与集成凭据,以及根证书颁发机构的私钥。请保留当前密钥、其密钥 ID,以及仍可能封装某个已存储值的每个退役密钥。数据库无法恢复丢失的必要主密钥材料。

还要保留数据库凭据,以及配置了邮件时的 SMTP 密码。1.5.x 或更早版本部署的恢复集还包括该版本的控制台认证 Secret(BETTER_AUTH_SECRET 或 secrets.betterAuthSecret),1.5.x 及更早版本启动时需要它。请将这些值保存在 Secret 管理系统或加密备份中,其访问控制至少应与数据库备份同等严格。

部署配置​

请保留用于定位和暴露恢复后服务的配置,包括公开控制面与 dp-manager URL、数据库连接、私有 CA 挂载、镜像覆盖项和网络访问设置。还要保留默认安装包或 Chart 之外提供的所有额外环境变量和 Kubernetes Secret。

若使用另一个部署的配置恢复数据库,可能导致认证失败、密文不可读,或证书颁发机构与网关证书记录不匹配。

发布版本信息​

记录备份时的控制面安装包或 Chart 版本,以及实际生效的镜像引用。恢复时先使用该版本。启动更高版本可能会在验证恢复前迁移数据库,而使用更低版本启动更新 schema 的数据库不受支持。

请保留固定版本的安装包或经过测试的获取方式;对于隔离网络部署尤其如此。单独记录有意设置的镜像覆盖项,因为它们可能跨越常规安装包或 Chart 升级而继续存在。

存储、保留和访问​

恢复集表示数据库、Secret、配置和软件版本之间的逻辑匹配;这些产物不必存放在同一位置。将加密密钥与已加密的数据库备份分开存储,可以降低单一存储位置泄露的影响,但恢复清单必须标明匹配的副本。

至少保留一份位于部署主机、集群和存储故障域之外的恢复副本。为每份副本定义恢复点目标、备份频率、保留期和删除控制。对传输中和静态备份加密,限制访问,并在恢复集清单中记录校验和或其它完整性信号。

定期确认保留的安装包或 Chart 版本及所有外部 Secret 来源仍可获取。若数据库备份对应的主密钥或软件已经丢失,该备份无法恢复。

备份 Docker Compose 部署​

打包部署将 PostgreSQL 数据存储在 aisix-self-hosted_pgdata 卷中,并将部署 Secret 和设置保存在 ./aisix-self-hosted/.env。数据卷在执行 ./run.sh down 和解压新安装包后仍会保留,但后续安装包不包含 .env,也无法从数据卷重建它。

请一起保留以下资产:

资产必要性
完整 PostgreSQL 备份或一致的 aisix-self-hosted_pgdata 快照恢复全部控制面和证书状态。
.env保留数据库密码、主密钥与密钥 ID、SMTP 设置、URL、版本固定值,以及镜像或运行时覆盖项。1.5.x 或更早版本的 .env 还包含控制台认证 Secret。
匹配的安装包或固定版本的安装包位置恢复与备份数据库 schema 匹配的脚本、Compose 定义和默认镜像集合。
外部文件和本地部署定制恢复私有 CA 证书和其它未存储在 PostgreSQL 中、由运维人员管理的输入。

创建冷卷快照时,请先停止堆栈,使 PostgreSQL 不再写入,随后为完整卷创建快照,再重新启动同一个安装。在线备份应使用可提供一致恢复点的 PostgreSQL 感知工具。恢复正常变更活动前,请验证备份可以读取。

不要把安装包归档当作 Secret 备份。解压另一个安装包会保留已有 .env,但不会重建丢失的 .env。

备份 Helm 部署​

对于 Helm 安装,请通过负责各项资产的系统保留同一个恢复集:

资产保护位置或方式
内置 PostgreSQL使用数据库感知流程或协调一致的卷快照备份 PostgreSQL PVC。
外部 PostgreSQL使用数据库服务提供的备份、时间点恢复和角色管理流程。
主密钥、SMTP 密码,以及 1.5.x 或更早版本的控制台认证 Secret保留 Chart 渲染的 Secret、api.smtp.existingSecret 指定的已有 Secret,以及提供这些值的受保护来源。
数据库和可选服务角色凭据保留已配置的现有 Secret,或渲染它们的受保护值来源。
实际生效的 Helm values 和发布历史保留 values 来源、Chart 版本、命名空间、release 名称、镜像 tag 和有意设置的覆盖项。
额外挂载的 Secret、ConfigMap 和 CA 文件通过其所属 Secret 或配置系统进行备份。

Chart 使用 helm.sh/resource-policy: keep 标记主要应用 Secret,因此普通 Helm uninstall 不会删除它。该注解无法防止命名空间或集群丢失;请单独备份其来源或加密副本。

导出的 Helm values 可能包含数据库密码和应用 Secret,应按敏感数据处理。values 引用现有 Secret 时,只备份 values 并不能保留 Secret 内容。

创建面向变更的备份​

执行升级或其它会影响 schema 的变更前:

  1. 确认当前控制面版本和实际生效的镜像覆盖项。
  2. 创建一致的 PostgreSQL 备份。
  3. 获取匹配的 Compose .env 或 Helm values 与 Secret 来源。
  4. 将备份时间、数据库身份、部署名称、软件版本、存储位置和完整性校验和记录为同一个恢复集清单。
  5. 验证备份产物可读,且仍能获取所需凭据和固定版本的软件。

在获取这些内容期间不要执行无关的配置变更或密钥轮换。如果数据库或其加密密钥集合发生变化,请创建新的恢复集。

恢复控制面​

如条件允许,请先恢复到隔离目标。在确认结果之前,阻止恢复后的控制面发送通知、访问生产服务提供方或接受生产网关连接。

  1. 选择一个完整恢复集,并获取匹配的安装包或 Chart 版本。
  2. 恢复部署配置和 Secret 来源,包括数据库所需的所有主密钥。
  3. 在控制面服务停止时恢复 PostgreSQL。对于外部数据库,重新创建文档要求的连接角色和权限。如果备份包含引用 cp_api_app 的授权,请在恢复数据库前使用上述属性重新创建该内部角色。如果备份省略依赖角色的所有权和权限语句,让 cp-api 在启动时重新创建内部角色和授权。
  4. 通过正常的 Compose 或 Helm 部署路径启动匹配版本的控制面。
  5. 检查启动日志,确认 cp-api 和 dp-manager 均已健康,且没有数据库、主密钥、迁移或 ca_root 错误。
  6. 使用恢复出的数据库中的账号登录,并验证组织、环境、资源和网关注册信息。恢复出的数据库已经有用户,因此无论首个管理员设置如何,cp-api 都不会创建首个管理员。
  7. 确认网关可以向 dp-manager 进行身份认证,且资源投射达到预期 revision。
  8. 如果存在安全的测试服务提供方,请通过非生产网关发送受控请求,并确认响应和已配置的遥测数据。
  9. 只有在这些检查通过后,才重新启用外部集成和生产网关连接。

启动回滚版本前,请先恢复数据库。部署包的 AISIX_ALLOW_DOWNGRADE=1 覆盖项仅用于确认有意回滚,不能让不兼容或已迁移的数据库变得安全。请按照升级 AISIX Enterprise中相应安装方式的回滚流程操作。

如果数据库包含网关证书记录却没有 ca_root,优先恢复完整的数据库备份。全新引导覆盖项会创建新的证书颁发机构,并强制所有网关重新注册;它不会恢复丢失的密钥。请参阅恢复缺失的 CA Root。

演练恢复​

只有成功恢复过的备份才经过验证。请根据部署风险和变更频率,定期在隔离环境中演练。

演练期间:

  • 从记录的恢复集恢复数据库、Secret、配置和匹配的软件;
  • 验证加密资源能够加载且没有主密钥错误;
  • 确认证书颁发机构和网关证书记录存在;
  • 登录并检查具有代表性的组织和环境资源;
  • 连接非生产网关并验证资源投射;
  • 发送受控请求并验证响应和已配置的遥测数据;
  • 记录恢复耗时、所需手动操作和缺失的外部依赖。

演练结束后,应修正备份流程,而不是把不可重复的临时处理写成操作说明。流程或所需资产清单发生变化时,请创建新的恢复集。

不能替代部署备份的内容​

  • 网关快照缓存可在控制面暂时中断时保留最近接受的网关配置,但无法重建控制面。
  • 脱敏的组织备份包会有意移除实时凭据和证书颁发机构状态。
  • 完整组织备份包只覆盖一个组织,并且只能恢复到全新安装的控制面,取代该安装的首个组织和管理员。它可以迁移,但不是完整控制面备份。
  • 安装包归档包含软件和部署模板,不包含生成的 .env 或 PostgreSQL 数据。
  • Helm release 元数据不能替代数据库或外部管理的 Secret 内容。