Because AlloyDB Omni is compatible with PostgreSQL, the data-restoration commands and techniques described by the pgBackRest manual apply to AlloyDB Omni as well. This page demonstrates a selection of common recovery tasks, with examples of relevant commands.
For more information about configuring pgBackRest to work with AlloyDB Omni, see Set up pgBackRest for AlloyDB Omni .
For Kubernetes-based information, see Back up and restore in Kubernetes .
Before you begin
Before restoring an AlloyDB Omni cluster, ensure that you have the following:
-
Set up and configured pgBackRest for your AlloyDB Omni instance.
-
Sufficient disk space on destination file system to store the restored AlloyDB Omni database cluster.
-
Same major version of AlloyDB Omni used for the restoration container as the original source container.
To check your version of PostgreSQL, run the following command:
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();"
Replace the following variable:
-
CONTAINER_NAME
: Name you used for your container. For example,my-omni-1
.
To check your version of pgBackRest, run the following command:
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
Replace the following variable:
-
CONTAINER_NAME
: Name you used for your container. For example,my-omni-1
.
If your target container has a different version of PostgreSQL, pgBackRest, or both, then you need to create a new target container with a matching version. If this is not possible, then you need to use an alternative method, such as the PostgreSQL included
pg_dump
orpg_dumpall
utilities to copy your databases across versions. -
Stop your AlloyDB Omni container
To simulate your AlloyDB Omni database cluster not being available, stop the container.
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
Replace the following variable:
-
CONTAINER_NAME
: Name you used for your container. For example,my-omni-1
.
Create idle AlloyDB Omni container
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
Replace the following variables:
-
CONTAINER_NAME
: Name you used for your container. For example,my-omni-1
. -
DATA_DIR
: Host directory path that your data is stored in. -
BACKUP_DIR
: External directory path that your backups are stored in. -
HOST_PORT
: TCP port on the host machine that the container should publish its own port5432
to. To use the PostgreSQL default port on the host machine as well, specify5432
.
Remove your data directory
To clear your AlloyDB Omni database cluster, remove the data directory.
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/*"
Replace the following variable:
-
CONTAINER_NAME
: Name you used for your container. For example,my-omni-1
.
Validate that your backups are visible
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
Replace the following variables:
-
CONTAINER_NAME
: Name you used for your container. For example,my-omni-1
. -
STANZA_NAME
: Name of the stanza you created. For example,my-stanza
.
Restore your backup
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
Replace the following variables:
-
CONTAINER_NAME
: Name you used for your container. For example,my-omni-1
. -
STANZA_NAME
: Name of the stanza you created. For example,my-stanza
.
Remove idle AlloyDB Omni container
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
Replace the following variable:
-
CONTAINER_NAME
: Name you used for your container. For example,my-omni-1
.
Create AlloyDB Omni container
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
Replace the following variables:
-
CONTAINER_NAME
: Name you used for your container. For example,my-omni-1
. -
DATA_DIR
: Host directory path that your data is stored in. -
BACKUP_DIR
: External directory path that your backups are stored in. -
HOST_PORT
: TCP port on the host machine that the container should publish its own port5432
to. To use the PostgreSQL default port on the host machine as well, specify5432
.
Validate that AlloyDB Omni started
Docker
docker logs -f CONTAINER_NAME
Docker
docker logs -f CONTAINER_NAME
Podman
podman logs -f CONTAINER_NAME
Podman
podman logs -f CONTAINER_NAME
Replace the following variable:
-
CONTAINER_NAME
: Name you used for your container. For example,my-omni-1
.
Other options
The pgBackRest restore
command is very flexible, with an array of options and
features that you can control through passing in different command-line options.
For a complete guide to performing restores, see Restore
.