このページでは、AlloyDB Omni コンテナに含まれているオープンソースのバックアップ ソリューションである pgBackRest で作成されたバックアップを使用して AlloyDB Omni クラスタを復元する方法について説明します。
AlloyDB Omni は PostgreSQL と互換性があるため、pgBackRest マニュアルで説明されているデータ復元コマンドと手法は AlloyDB Omni にも適用されます。このページでは、一般的な復元タスクの選択と、関連するコマンドの例を示します。
AlloyDB Omni で動作するように pgBackRest を構成する方法については、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
コマンドは非常に柔軟で、さまざまなコマンドライン オプションを渡してさまざまなオプションと機能を制御できます。復元の詳細なガイドについては、復元をご覧ください。