备份与恢复
只有同时保存 PostgreSQL 数据,以及解释这些数据所需的密钥和配置,AISIX Enterprise 才能恢复。数据库备份缺少匹配的主密钥,会使加密凭据无法读取。配置文件没有匹配的数据库,也无法重建组织、资源或现有网关信任的证书颁发机构。
应将数据库、加密密钥、部署配置和软件版本视为同一个恢复集。请保留每项资产的匹配副本,将整个恢复集作为敏感数据保护,并在依赖它执行升级回滚或灾难恢复之前演练恢复流程。
选择恢复范围
| 目标 | 所需保护措施 |
|---|---|
| 恢复完整的 AISIX Enterprise 控制面 | 同时备份完整 PostgreSQL 状态、匹配的密钥、部署配置和软件版本。 |
| 回滚升级 | 在升级前立即创建恢复集。启动旧版控制面前,先恢复数据库。 |
| 迁移或复现单个组织 | 使用组织备份与恢复。备份包只能恢复到新安装的控制面,不能替代完整部署备份。 |
| 控制面短暂中断期间保持网关服务 | 配置离线韧性。网关快照缓存用于维持服务连续性,不是控制面备份。 |
保护恢复集
使用以下资产构建恢复集,并将其存储和保留在部署故障域之外。
PostgreSQL 状态
控制面数据库包含组织、环境、用户、模型、策略、加密凭据、投射到网关的配置、审计和用量数据,以及根证书颁发机构与网关证书账本。请备份整个数据库,不要只选择个别应用表。
使用 PostgreSQL 感知的备份方式,或与 PostgreSQL 协调一致的存储快照。不要把正在运行的数据库卷当作普通文件复制。备份必须同时保留 public、auth schema,以及 dp-manager 创建的 Kine 表。
对于外部数据库,请把连接角色、它对数据库的所有权,以及 DBA 额外添加的 schema 授权纳入数据库恢复计划。单库 dump 不会保留集群全局角色,因此请在恢复前按外部数据库重新创建连接角色,并以该角色执行恢复,使其继续拥有控制面表。
由 1.7.0 或更早版本首次安装的数据库中,可能仍保留授予 cp_api_app 的权限。这个角色由这些版本使用,当前控制面不会删除它。此类数据库的 dump 中包含引用该角色的语句。目标集群没有 cp_api_app 时,pg_restore 会对每条这类语句报错,其余内容照常恢复;使用 pg_restore --no-privileges 恢复可以避免这些错误。cp-api 每次启动时都会重新设置其自有函数的权限。如需从源集群删除该角色,请参见删除 cp_api_app 角色。
从 1.7.0 或更早版本获取的恢复集需要用对应版本的软件恢复,这些版本仍使用 cp_api_app,并要求连接角色具备 CREATEROLE 和 BYPASSRLS。此类恢复 请按照 1.7.0 版本的文档操作。
角色要求请参阅外部数据库。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。