pgBackRest を使用して AlloyDB Omni クラスタを復元する

このページでは、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 コマンドは非常に柔軟で、さまざまなコマンドライン オプションを渡してさまざまなオプションと機能を制御できます。復元の詳細なガイドについては、復元をご覧ください。