使用 pgBackRest 恢复 AlloyDB Omni 集群

选择文档版本:

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

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

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

准备工作

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

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

    目标服务器可以是与来源服务器相同的机器。

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

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

概览

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

通常,您可以将 pgbackrest restore 命令与提供以下信息的标志结合使用:

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

运行容器化 pgbackrest restore 命令时,请务必从容器的角度使用文件系统路径。例如,无论 AlloyDB Omni 数据目录位于主机服务器上的什么位置,其路径始终为 /mnt/disks/pgsql。如需了解详情,请参阅关于文件系统路径的说明

执行时间点恢复

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

此示例假定存在以下情况:

  • 您有一个位于目标 AlloyDB Omni 数据目录顶层的 pgbackrest.conf 文件。这样,该文件就会以 /mnt/disks/pgsql/pgbackrest.conf 的形式提供给容器化 pgbackrest

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

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

    sudo docker exec pg-service pgbackrest \
      --config-path=/mnt/disks/pgsql \
      --stanza=STANZA \
      --type=time \
      --pg1-path=/mnt/disks/pgsql/data-RESTORED \
      --target="TIMESTAMP" \
      restore

    替换以下内容:

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

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

  2. 在目标环境中,关停数据库服务器:

    sudo alloydb database-server stop
  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. 启动数据库服务器:

    sudo alloydb database-server start

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

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

其他选项

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

  • 将恢复仅限制为更改后的文件。
  • 仅恢复所选数据库。

如需查看在 pgBackRest 中执行恢复的完整指南,请参阅恢复