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

ドキュメントのバージョンを選択してください。

このページでは、pgBackRest で作成されたバックアップを使用して AlloyDB Omni クラスタを復元する方法について説明します。pgBackRest は、AlloyDB Omni に含まれているオープンソースのバックアップ ソリューションです。

AlloyDB Omni は PostgreSQL と互換性があるため、pgBackRest マニュアルに記載されているデータ復元コマンドや手法は AlloyDB Omni にも適用されます。このページでは、一連の一般的な復元タスクと、各タスクに関連するコマンドの例を示します。

TDE 対応クラスタは、pgBackRest を使用したバックアップと復元もサポートしています。詳細については、TDE 対応クラスタを作成するをご覧ください。

pgBackRest を AlloyDB Omni で動作するように構成する方法については、AlloyDB Omni 用に pgBackRest を設定するをご覧ください。

Kubernetes ベースの情報については、Kubernetes でのバックアップと復元をご覧ください。

始める前に

AlloyDB Omni クラスタを復元する前に、以下を確認してください。

  • 復元先のファイル システムに、復元する 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 コマンドは柔軟性が高く、各種コマンドライン オプションを渡すことでさまざまなオプションや機能を制御できます。復元の詳細なガイドについては、復元をご覧ください。