跳到主要内容
版本:1.3.0

备份与恢复

只有同时保留 PostgreSQL 数据以及用于解释这些数据的 Secret 和配置,才能恢复本地部署的 AISIX Cloud。只有数据库备份而没有匹配的主密钥,已加密的凭据将无法读取;只有配置文件而没有匹配的数据库,也无法重建组织、资源或现有网关所信任的证书颁发机构。

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

选择恢复范围

目标必须保护的内容
恢复完整的本地部署控制面备份完整的 PostgreSQL 状态,以及匹配的 Secret、部署配置和软件版本。
回滚升级在升级前立即创建恢复集。在启动旧版控制面之前先恢复数据库。
移动或复现单个组织使用组织备份与恢复。组织备份包不能替代完整部署备份。
控制面暂时中断时让网关继续提供服务配置离线韧性。网关快照缓存是连续性机制,不是控制面备份。

保护恢复集

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

PostgreSQL 状态

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

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

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

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

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

加密与认证 Secret

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

还要保留控制台认证 Secret 和数据库凭据。请将这些值保存在 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、控制台认证 Secret、URL、版本固定值,以及镜像或运行时覆盖项。
匹配的安装包或固定版本的安装包位置恢复与备份数据库 schema 匹配的脚本、Compose 定义和默认镜像集合。
外部文件和本地部署定制恢复私有 CA 证书和其它未存储在 PostgreSQL 中、由运维人员管理的输入。

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

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

备份 Helm 部署

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

资产保护位置或方式
内置 PostgreSQL使用数据库感知流程或协调一致的卷快照备份 PostgreSQL PVC。
外部 PostgreSQL使用数据库服务提供的备份、时间点恢复和角色管理流程。
主密钥和控制台认证 Secret保留 Chart 渲染的 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-apidp-manager 和控制台均已健康,且没有数据库、主密钥、迁移或 ca_root 错误。
  6. 登录并验证组织、环境、资源和网关注册信息。
  7. 确认网关可以向 dp-manager 进行身份认证,且资源投射达到预期 revision。
  8. 如果存在安全的测试服务提供方,请通过非生产网关发送受控请求,并确认响应和已配置的遥测数据。
  9. 只有在这些检查通过后,才重新启用外部集成和生产网关连接。

回滚版本启动前必须先恢复数据库。安装包覆盖项 AISIX_ALLOW_DOWNGRADE=1 只表示确认有意回滚,并不能让不兼容或已经迁移的数据库变得安全。请遵循升级 AISIX中针对安装方式的回滚流程。

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

演练恢复

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

演练期间:

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

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

不能替代部署备份的内容

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