本页介绍了如何使用通过开源数据库备份服务器 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
用户身份进行身份验证,而无需密码。目标服务器上有足够的可用磁盘空间来存储已恢复的数据库。
使用特定备份进行恢复
在目标服务器上,停止 AlloyDB Omni。
Docker
docker stop CONTAINER_NAME
将
CONTAINER_NAME
替换为您在安装 AlloyDB Omni 容器时为其分配的名称,例如my-omni
。Podman
podman stop CONTAINER_NAME
将
CONTAINER_NAME
替换为您在安装 AlloyDB Omni 容器时为其分配的名称,例如my-omni
。在 Barman 服务器上,选择要恢复的备份。如需查看可用的备份,请运行
barman list-backups
命令。如需查看特定备份的详细信息,请运行barman show-backup
命令。如需将所选备份恢复到目标 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
。
在 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
:要恢复的时间,采用任何同时指定日期和时间的 PostgreSQLtimestamp
格式(例如2024-02-06 00:00:00
)。DATA_PATH
:目标服务器数据目录的data
子目录的路径,例如/home/your-username/alloydb-data/data
。