このページでは、pgBackRest で作成されたバックアップを使用して AlloyDB Omni クラスタを復元する方法について説明します。pgBackRest は、AlloyDB Omni コンテナに含まれているオープンソースのバックアップ ソリューションです。
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
ユーティリティなどの別の方法を使用する必要があります。
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
コマンドは柔軟性が高く、各種コマンドライン オプションを渡すことでさまざまなオプションや機能を制御できます。復元の詳細なガイドについては、復元をご覧ください。