由于 AlloyDB Omni 与 PostgreSQL 兼容,因此 pgBackRest 手册中介绍的数据恢复命令和技术也适用于 AlloyDB Omni。本页面演示了一些常见的恢复任务,并提供了相关命令的示例。
启用 TDE 的集群还支持使用 pgBackRest 进行备份和恢复。如需了解详情,请参阅创建启用 TDE 的集群。
如需详细了解如何将 pgBackRest 配置为与 AlloyDB Omni 配合使用,请参阅为 AlloyDB Omni 设置 pgBackRest。
如需了解基于 Kubernetes 的信息,请参阅在 Kubernetes 中备份和恢复。
准备工作
在恢复 AlloyDB Omni 集群之前,请确保您具有以下内容:
为 AlloyDB Omni 实例设置并配置 pgBackRest。
目标文件系统上有足够的磁盘空间,来存储已恢复的 AlloyDB Omni 数据库集群。
用于恢复容器的 AlloyDB Omni 主要版本与原始来源容器相同。
如需检查 PostgreSQL 版本,请运行以下命令:
Docker
docker exec -u postgres CONTAINER_NAME psql -c "SELECT version();"
Docker
docker exec -u postgres CONTAINER_NAME psql -c "SELECT version();"
Podman
podman exec -u postgres CONTAINER_NAME psql -c "SELECT version();"
Podman
podman exec -u postgres CONTAINER_NAME psql -c "SELECT version();"
执行以下变量替换操作:
CONTAINER_NAME:您为容器使用的名称。例如my-omni-1。
如需检查 pgBackRest 版本,请运行以下命令:
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest version
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest version
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest version
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest version
执行以下变量替换操作:
CONTAINER_NAME:您为容器使用的名称。例如my-omni-1。
如果您的目标容器具有不同版本的 PostgreSQL、pgBackRest 或两者,那么您需要创建一个具有匹配版本的新目标容器。如果无法使用这种方法,则需要使用其他方法(例如 PostgreSQL 附带的
pg_dump或pg_dumpall实用程序),以便在不同版本之间复制数据库。
停止 AlloyDB Omni 容器
如需模拟 AlloyDB Omni 数据库集群不可用的情况,请停止容器。
Docker
docker stop CONTAINER_NAMEdocker rm CONTAINER_NAME
Docker
docker stop CONTAINER_NAMEdocker rm CONTAINER_NAME
Podman
podman stop CONTAINER_NAMEpodman rm CONTAINER_NAME
Podman
podman stop CONTAINER_NAMEpodman rm CONTAINER_NAME
执行以下变量替换操作:
CONTAINER_NAME:您为容器使用的名称。例如my-omni-1。
创建空闲的 AlloyDB Omni 容器
Docker
docker run -d --name CONTAINER_NAME \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest sleep infinity
Docker
docker run -d --name CONTAINER_NAME \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest sleep infinity
Podman
podman run -d --name CONTAINER_NAME \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest sleep infinity
Podman
podman run -d --name CONTAINER_NAME \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest sleep infinity
执行以下变量替换操作:
CONTAINER_NAME:您为容器使用的名称。例如my-omni-1。DATA_DIR:存储数据的主机目录路径。BACKUP_DIR:存储备份的外部目录路径。HOST_PORT:容器应将自己的端口5432发布到的宿主机上的 TCP 端口。如需在宿主机上使用 PostgreSQL 默认端口,请指定5432。
移除数据目录
如需清除 AlloyDB Omni 数据库集群,请移除数据目录。
Docker
docker exec CONTAINER_NAME sh -c "rm -rf /var/lib/postgresql/data/*"
Docker
docker exec CONTAINER_NAME sh -c "rm -rf /var/lib/postgresql/data/*"
Podman
podman exec CONTAINER_NAME sh -c "rm -rf /var/lib/postgresql/data/*"
Podman
podman exec CONTAINER_NAME sh -c "rm -rf /var/lib/postgresql/data/*"
执行以下变量替换操作:
CONTAINER_NAME:您为容器使用的名称。例如my-omni-1。
验证您的备份是否可见
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=STANZA_NAME \ info
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=STANZA_NAME \ info
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=STANZA_NAME \ info
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=STANZA_NAME \ info
执行以下变量替换操作:
CONTAINER_NAME:您为容器使用的名称。例如my-omni-1。STANZA_NAME:您创建的节的名称。例如my-stanza。
恢复您的备份
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=STANZA_NAME \ restore
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=STANZA_NAME \ restore
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=STANZA_NAME \ restore
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=STANZA_NAME \ restore
执行以下变量替换操作:
CONTAINER_NAME:您为容器使用的名称。例如my-omni-1。STANZA_NAME:您创建的节的名称。例如my-stanza。
移除空闲的 AlloyDB Omni 容器
Docker
docker kill CONTAINER_NAMEdocker rm CONTAINER_NAME
Docker
docker kill CONTAINER_NAMEdocker rm CONTAINER_NAME
Podman
podman kill CONTAINER_NAMEpodman rm CONTAINER_NAME
Podman
podman kill CONTAINER_NAMEpodman rm CONTAINER_NAME
执行以下变量替换操作:
CONTAINER_NAME:您为容器使用的名称。例如my-omni-1。
创建 AlloyDB Omni 容器
Docker
docker run -d --name CONTAINER_NAME \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest
Docker
docker run -d --name CONTAINER_NAME \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest
Podman
podman run -d --name CONTAINER_NAME \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest
Podman
podman run -d --name CONTAINER_NAME \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest
执行以下变量替换操作:
CONTAINER_NAME:您为容器使用的名称。例如my-omni-1。DATA_DIR:存储数据的主机目录路径。BACKUP_DIR:存储备份的外部目录路径。HOST_PORT:容器应将自己的端口5432发布到的宿主机上的 TCP 端口。如需在宿主机上使用 PostgreSQL 默认端口,请指定5432。
验证 AlloyDB Omni 是否已启动
Docker
docker logs -f CONTAINER_NAME
Docker
docker logs -f CONTAINER_NAME
Podman
podman logs -f CONTAINER_NAME
Podman
podman logs -f CONTAINER_NAME
执行以下变量替换操作:
CONTAINER_NAME:您为容器使用的名称。例如my-omni-1。
其他选项
pgBackRest restore 命令非常灵活,您可以通过传入不同的命令行选项来控制一系列选项和功能。如需查看执行恢复的完整指南,请参阅恢复。