由于 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 会根据可用性、预期速度和其他因素选择要从中恢复的仓库。
此示例假定存在以下情况:
您有一个位于目标 AlloyDB Omni 数据目录顶层的
pgbackrest.conf
文件。这样,该文件就会以/var/lib/postgresql/data
的形式提供给容器化pgbackrest
。
在目标环境中,执行 PITR 恢复,并指定要恢复到的时间戳:
Docker
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
。
Podman
podman 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
。
在目标环境中,使用以下命令停止容器:
Docker
docker container stop CONTAINER_NAME
Podman
podman container stop CONTAINER_NAME
出于安全考虑,重命名数据目录的
data
子目录:cd DATA_DIR
sudo mv data data-OLD
将
DATA_DIR
替换为 AlloyDB Omni 数据目录的文件系统路径。将恢复的数据移到目标位置,并清理
postgresql.auto.conf
:sudo mv data-RESTORED data
sudo sed -i 's|data-RESTORED|data|' data/postgresql.auto.conf
使用数据库服务器启动 AlloyDB Omni 容器:
Docker
docker container start CONTAINER_NAME
Podman
podman container start CONTAINER_NAME
现在,您可以使用 psql
连接到数据库,并确认数据已按预期恢复。如果是这样,您可以删除您之前创建的 data
子目录的 data-OLD
副本。
如需详细了解 pgBackRest 中的 PITR,请参阅时间点恢复。如需详细了解如何准备 pgbackrest.conf
文件以用于 AlloyDB Omni,请参阅为 AlloyDB Omni 设置 pgBackRest。
其他选项
pgbackrest restore
命令非常灵活,您可以通过传入不同的命令行选项来控制一系列选项和功能。包括:
- 将恢复仅限制为更改后的文件。
- 仅恢复所选数据库。
如需查看在 pgBackRest 中执行恢复的完整指南,请参阅恢复。