使用 pgBackRest 恢复 AlloyDB Omni 集群

本页介绍了如何使用 AlloyDB Omni Docker 容器附带的开源备份解决方案 pgBackRest 创建的备份来恢复 AlloyDB Omni 集群。

由于 AlloyDB Omni 与 PostgreSQL 兼容,因此 pgBackRest 手册中介绍的数据恢复命令和方法也适用于 AlloyDB Omni。本页面演示了一些常见的恢复任务,并提供了相关命令示例。

如需详细了解如何配置 pgBackRest 以与 AlloyDB Omni 搭配使用,请参阅为 AlloyDB Omni 设置 pgBackRest

如需了解 Kubernetes 相关信息,请参阅在 Kubernetes 中进行备份和恢复

准备工作

在将 AlloyDB Omni 配置为与 pgBackrest 搭配使用之前,您需要在自己控制的服务器上安装并运行 AlloyDB Omni

  • 目标数据库服务器,其运行的 AlloyDB Omni 主要版本与要恢复的备份相同。如需详细了解如何安装 AlloyDB Omni,请参阅安装 AlloyDB Omni

  • 一个 pgBackRest 备份代码库,其中包含至少一个源 AlloyDB Omni 数据库的备份。

  • 目标服务器上有足够的可用磁盘空间来存储已恢复的数据库。

概览

如需使用 pgBackRest 执行 AlloyDB Omni 恢复,请运行 pgbackrest restore 命令。您向命令提供的参数因具体情况而异。

一般来说,您可以使用提供以下信息的标志运行 pgbackrest restore 命令:

  • pgbackrest.conf 文件的位置。
  • 您要恢复到的 pgBackRest 备份代码库的名称。这些代码库在 pgbackrest.conf 文件中进行命名和定义。
  • 要将恢复的数据写入到的本地文件系统中的位置。
  • 您要从中恢复的特定备份或时间点的标识符。

运行容器化 pgbackrest restore 命令时,请务必使用容器视图中的文件系统路径。例如,无论 AlloyDB Omni 数据目录在主机服务器上的什么位置,其路径始终为 /var/lib/postgresql/data。如需了解详情,请参阅关于文件系统路径的备注

执行时间点恢复

此示例从 pgBackRest 代码库恢复数据,并指定要恢复到的特定时间点。如果您在目标环境的 pgbackrest.conf 文件中定义了多个代码库,则 pgBackRest 会根据可用性、预期速度和其他因素选择要从中恢复的代码库。

该示例假定以下情况:

  • 您有一个 pgbackrest.conf 文件位于目标 AlloyDB Omni 数据目录的顶层。这样,该文件就会作为 /var/lib/postgresql/data 提供给容器化 pgbackrest

  • 您已使用 pgBackRest 配置启用持续备份

  1. 在目标环境中,执行 PITR 恢复,并指定要恢复到的时间戳:

    docker exec CONTAINER_NAME pgbackrest \
      --config-path=/var/lib/postgresql/data \
      --stanza=STANZA \
      --type=time \
      --pg1-path=/var/lib/postgresql/data/data-RESTORED \
      --target="TIMESTAMP" \
      restore

    替换以下内容:

    • CONTAINER_NAME:您在安装 AlloyDB Omni 容器时为其分配的名称,例如 my-omni

    • STANZA:要应用于此恢复的配置诗节(由 pgbackrest.conf 文件定义),例如 omni

    • TIMESTAMP:要恢复的时间,例如 2024-02-22 19:50:00

  2. 在目标环境中,使用以下命令停止容器:

    docker container stop CONTAINER_NAME
  3. 出于安全考虑,请重命名数据目录的 data 子目录:

    cd DATA_DIR
    sudo mv data data-OLD

    DATA_DIR 替换为 AlloyDB Omni 数据目录的文件系统路径。

  4. 将恢复的数据移至相应位置,并清理 postgresql.auto.conf

    sudo mv data-RESTORED data
    sudo sed -i 's|data-RESTORED|data|' data/postgresql.auto.conf
  5. 启动包含数据库服务器的 AlloyDB Omni 容器:

    docker container start CONTAINER_NAME

现在,您可以使用 psql 连接到数据库,并确认数据已按预期恢复。如果是,您可以删除之前创建的 data 子目录的 data-OLD 副本。

如需详细了解 pgBackRest 中的 PITR,请参阅时间点恢复。 如需详细了解如何准备 pgbackrest.conf 文件以与 AlloyDB Omni 搭配使用,请参阅为 AlloyDB Omni 设置 pgBackRest

其他选项

pgbackrest restore 命令非常灵活,具有一系列选项和功能,您可以通过传入不同的命令行选项来控制这些选项和功能。包括:

  • 仅恢复已更改的文件。
  • 仅恢复所选数据库。

如需了解如何在 pgBackRest 中执行恢复操作的完整指南,请参阅恢复