使用 Barman 恢复 AlloyDB Omni 集群

本页介绍了如何使用通过开源数据库备份服务器 Barman 创建的备份来恢复 AlloyDB Omni 集群。

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

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

准备工作

在恢复 AlloyDB Omni 数据之前,您需要满足以下条件:

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

    目标服务器可以与源服务器在同一台机器上。

  • 安装在目标服务器上的 rsync 实用程序。

  • Barman 备份服务器,其中至少包含一个有效的源 AlloyDB Omni 数据库的 Barman 备份。

  • Barman 备份服务器与目标服务器之间的 SSH 连接。

  • 设置的 SSH 密钥,用于允许 Barman 服务器上的 barman 用户以目标服务器的 postgres 用户身份进行身份验证,而无需密码。

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

使用特定备份进行恢复

  1. 在目标服务器上,停止 AlloyDB Omni。

    Docker

     docker stop CONTAINER_NAME

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

    Podman

     podman stop CONTAINER_NAME

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

  2. 在 Barman 服务器上,选择要恢复的备份。如需查看可用的备份,请运行 barman list-backups 命令。如需查看特定备份的详细信息,请运行 barman show-backup 命令

  3. 如需将所选备份恢复到目标 AlloyDB Omni 服务器,请运行 barman recover 命令

    运行该命令时,请添加以下内容:

    以下命令演示了将 barman recover 与 AlloyDB Omni 搭配使用的示例:

    barman recover --remote-ssh-command "ssh postgres@TARGET_IP" TARGET_LABEL BACKUP_ID DATA_PATH

    替换以下内容:

    • TARGET_IP:目标服务器的 IP 地址。

    • TARGET_LABEL:您在 Barman 的配置文件中为服务器分配的标签。

    • BACKUP_ID:要从中恢复的备份的 ID(在上一步中指定),例如 20230810T210200

    • DATA_PATH:目标服务器数据目录的 data 子目录的路径,例如 /home/your-username/alloydb-data/data

  4. 在 AlloyDB Omni 目标数据库服务器上,启动服务:

    Docker

    docker start CONTAINER_NAME

    Podman

    podman start CONTAINER_NAME

服务重启后,连接到 AlloyDB Omni 服务器。您应该会看到已恢复的数据库和数据。

恢复到特定时间点

如需执行时间点恢复,请按照上一部分中列出的步骤操作,但有一个修改。运行 barman recover 命令时,您还必须指定 Barman 某个时间点恢复选项

以下命令演示了将 barman recover 与 AlloyDB Omni 搭配使用并启用时间点恢复选项的示例:

barman recover --remote-ssh-command "ssh postgres@TARGET_IP" TARGET_LABEL BACKUP_ID --target-time="RESTORE_TIMESTAMP" DATA_PATH

替换以下内容:

  • TARGET_IP:目标服务器的 IP 地址。

  • TARGET_LABEL:您在 Barman 的配置文件中为服务器分配的标签。

  • BACKUP_ID:要从中恢复的备份的 ID(在上一步中指定),例如 20230810T210200

  • TARGET_TIMESTAMP:要恢复的时间,采用任何同时指定日期和时间的 PostgreSQL timestamp 格式(例如 2024-02-06 00:00:00)。

  • DATA_PATH:目标服务器数据目录的 data 子目录的路径,例如 /home/your-username/alloydb-data/data