由于 AlloyDB Omni 与 PostgreSQL 兼容,因此 pgBackRest 手册中介绍的数据恢复命令和技术也适用于 AlloyDB Omni。本页面演示了一些常见的恢复任务,并提供了相关命令的示例。
如需详细了解如何将 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
实用程序),以便在不同版本之间复制数据库。 如需了解详情,请参阅导出 DMP 文件。
停止 AlloyDB Omni 容器
如需模拟 AlloyDB Omni 数据库集群不可用的情况,请停止容器。
Docker
docker stop CONTAINER_NAME
docker rm CONTAINER_NAME
Docker
docker stop CONTAINER_NAME
docker rm CONTAINER_NAME
Podman
podman stop CONTAINER_NAME
podman rm CONTAINER_NAME
Podman
podman stop CONTAINER_NAME
podman 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_NAME
docker rm CONTAINER_NAME
Docker
docker kill CONTAINER_NAME
docker rm CONTAINER_NAME
Podman
podman kill CONTAINER_NAME
podman rm CONTAINER_NAME
Podman
podman kill CONTAINER_NAME
podman 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
命令非常灵活,您可以通过传入不同的命令行选项来控制一系列选项和功能。如需查看执行恢复的完整指南,请参阅恢复。