跳到主要内容
版本:3.9.x

备份与恢复

在开始任何升级之前,请务必先备份你的数据库数据

你可以使用以下两种方法来备份 API7 企业版中使用的数据库数据:

  1. 使用数据库提供的原生工具来备份数据。这允许你快速将备份的数据导入到新数据库中,以便立即恢复。
  2. 使用 ADC 工具 以声明式配置文件的形式备份你的网关配置(服务、路由、插件、消费者等)。

建议同时使用这两种方法,因为这能在出现问题需要恢复数据时提供更大的灵活性。

危险

如果数据损坏,请先尝试数据库级别的恢复,否则请使用一个新数据库,并使用存储的声明式配置文件更新你以前的配置。

数据库备份

数据库原生备份

API7 企业版默认使用 PostgreSQL 数据库。使用 PostgreSQL 的原生命令,你可以使用 pg_dump 命令以纯文本、目录等格式备份数据。例如,以目录格式备份的命令:

pg_dump -U api7ee -d api7ee -F d -f api7ee_backup_20250523
  • pg_dump:PostgreSQL 的逻辑备份工具,用于导出数据库内容。
  • -U api7ee:指定数据库连接用户名为 api7ee
  • -d api7ee:指定要备份的数据库名称为 api7ee
  • -F d:指定备份格式为目录(Directory)格式,适用于大型数据库和并行恢复。
  • -f api7ee_backup_20250523:指定备份的输出目录名称为 api7ee_backup_20250523。备份结果将存储在此目录中。

声明式文件备份

使用 ADC 工具 以声明式配置文件的形式备份你的 API7 网关配置(服务、路由、插件、消费者等)。

  1. 使用 ADC 执行服务验证,确保它可以正常连接到 API7 企业版:

    adc ping --backend api7ee --server "https://{DASHBOARD_ADDR}"
  2. 使用 ADC dump 命令将每个网关组的数据存储到本地:

    adc dump -o api7ee-dump.yaml --backend api7ee --server "https://{DASHBOARD_ADDR}"

这是一个示例配置文件。有关更多 ADC 命令,请参阅 ADC 命令参考

数据恢复和回滚

从数据库恢复

要从数据库备份中恢复 API7 企业版数据,你需要首先准备一个新的数据库(以 PostgreSQL 为例)。

  1. 在控制平面 CP(Dashboard 和 DP-Manager)配置文件中,将数据库连接地址修改为新数据库:

    database:
    dsn: "postgres://api7ee:changeme@192.168.31.10:5432/api7ee"

    重启 CP。

  2. 恢复之前备份的数据:

    pg_restore -U api7ee -C -d api7ee api7ee_backup_20250523/
    • -U:指定数据库连接用户名。该用户需要有足够的权限来创建和恢复数据库。
    • -C:首先创建目标数据库,然后连接到该数据库进行恢复。
    • -d:指定目标数据库名称。
  3. 使用先前存储的本地部署脚本或网关实例的配置文件来重新部署数据平面 DP 中的节点。

从声明式配置恢复

危险

如果你遇到问题需要回滚,请优先尝试数据库恢复。只有在数据损坏时,才将声明式配置恢复作为最后的手段。

首先,将你部署的 API7 企业版(CP 和 DP)恢复为原始版本的配置和镜像 tag,并将其连接到你新准备的数据库。然后,使用 ADC 工具恢复你之前的配置。

  1. 使用 ADC 验证服务连通性并确认它可以连接到 API7 企业版:

    adc ping --backend api7ee --server "https://{DASHBOARD_ADDR}"
  2. 使用 ADC 同步每个网关组的数据:

    adc sync -f api7ee-dump.yaml --backend api7ee --server "https://{DASHBOARD_ADDR}"

其他文件

除了你在 API7 企业版中创建的资源配置之外,还有一些重要文件需要手动备份:

  1. 为网关实例创建的 conf.yaml 文件。
  2. 自定义插件的源代码。
  3. 部署 API7 网关实例时使用的部署脚本和其他文件。

这些文件与你的业务和部署环境相关。如果缺少这些文件,可能会在出现问题时影响数据恢复。

建议将这些文件存储在你部署 API7 企业版的平台上以进行集中管理。