组织备份与恢复
AISIX Cloud 可以把一个组织导出为 gzip 压缩的 SQL 备份文件,并把它导入到另一套控制面版本相同的部署。控制台和 Admin API 两种操作方式在 Hybrid Cloud 和 On-Premises 中均可使用。完整备份文件保留凭据和证书状态,可用于备份,也可用于在持有所需主密钥的部署之间迁移。脱敏备份文件把凭据替换为合成值,可用于技术支持复现问题,也可用于在不共享源端密钥的前提下迁移组织。
选择备份文件类型
按目标部署能否安全使用源部署的主密钥来选择备份文件类型:
| 备份文件 | 用途 | 恢复前提 |
|---|---|---|
| 完整 | 备份一个组织,或在不替换其凭据的前提下迁移该组织。 | 目标必须运行相同的控制面版本,并持有解密该文件所需的每一把源端主密钥,包括仍在封装某个已存储值的已停用密钥。 |
| 脱敏 | 为排查问题而复现一个组织,或在不共享源端主密钥的前提下迁移其结构。 | 目标必须运行相同的控制面版本。导入时会用目标的主密钥重新加密这些合成凭据。在把导入后的组织用于生产流量之前,请替换这些合成凭据。 |
完整备份文件包含真实凭据。凭据在配置表中仍是信封加密的,但投射给网关的配置文档中是其明文值。该文件还包含根证书颁发机构的私钥。请按照保管和传输数据库的同等要求保管和传输它。
导出一个组织
交互式导出请使用控制台;如需自动执行定时备份或生成支持文件,请使用 Admin API。
使用控制台
打开 Settings → Backup & restore。选择是否脱敏凭据、设置审计记录的时间窗口,并可选择是否包含请求遥测数据。选择 Download backup 导出备份文件。
对组织 owner,脱敏默认关闭。组织 admin 只能导出脱敏备份文件,因此该开关对他们保持打开且锁定。
使用 Admin API
导出前请先设置 Admin API 基础 URL 和一个 Admin Token:
# AISIX_CP 包含 /api,且不含尾部斜杠
# 本地私有化部署快速入门使用 http://localhost:8080/api
export AISIX_CP="YOUR_AISIX_CLOUD_ADMIN_API_URL"
export AISIX_TOKEN="YOUR_ADMIN_TOKEN"
以下请求下载一份完整备份文件,并使用服务端提供的文件名:
curl -fSL "${AISIX_CP}/data_export" \
-H "Authorization: Bearer ${AISIX_TOKEN}" \
-OJ
添加 ?redact=true 可下载脱敏备份文件。该接口还接受以下参数:
| 参数 | 默认值 | 作用 |
|---|---|---|
redact | false | 把凭据替换为合成值。 |
audit_since | 导出时间前 30 天 | 以 RFC 3339 时间戳设置审计事件的时间下界。 |
include_usage_events | false | 是否包含请求遥测数据。 |
usage_since | 导出时间前 7 天 | 以 RFC 3339 时间戳设置用量事件的时间下界。未包含用量事件时该参数无效。 |
响应为 application/gzip。其 Content-Disposition 响应头给出的文件名形如:
aisix-export-<org-slug>-<UTC YYYYMMDDThhmmssZ>-full.sql.gz
aisix-export-<org-slug>-<UTC YYYYMMDDThhmmssZ>-redacted.sql.gz
响应头 X-Aisix-Export-Redacted 也会以 true 或 false 标识导出模式。
在保管或传输之前,请确认下载已完整:
export AISIX_BUNDLE="PATH_TO_DOWNLOADED_BUNDLE"
gzip -t "${AISIX_BUNDLE}"
脱敏导出对组织的 admin 和 owner 开放。具备数据导出读取权限的自定义角色也可以下载脱敏备份文件。完整导出仅限 owner。owner 使用 Admin Token 时,该 Token 必须具备 write scope;只读 Token 无法下载真实凭据。
审计事件和用量事件各自以 100000 行为上限,按时间由新到旧截取。达到上限不会导致导出失败,备份文件的清单会把相应的表标记为已截断。
同一组织同时只能运行一次导出,整套部署同时最多运行两次。超出任一限制的请求会收到 409 EXPORT_IN_PROGRESS。每次完成 的导出都会新增一条审计事件,记录导出模式、参数、主密钥指纹、各表行数以及截断状态。
恢复一个组织
官方支持的导入方式会在一个数据库事务内应用整个备份文件。导入要么完整成功,要么什么都不改变。由于备份文件只包含数据、不包含数据库结构,目标必须运行与源端相同的控制面版本。
请按目标部署的状态选择操作步骤:
- 如果目标部署已存在用户或组织,请登录控制台并上传备份文件。这条路径在 Hybrid Cloud 和 On-Premises 中均可使用。
- 如果是灾难恢复到一套空的 On-Premises 部署,请启动所需服务,并以未鉴权方式调用导入接口。
恢复到已有数据的部署
以用户身份登录目标部署,打开 Settings → Backup & restore,使用 Restore from a file。该操作会拒绝 Admin Token。已登录的用户会成为每个被导入组织的 owner。
导入不会合并组织或用户。当备份文件中的某个组织或用户在目标上已存在时,导入会被拒绝。