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

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

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

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

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

始める前に

pgBackrest で動作するように AlloyDB Omni を構成する前に、管理するサーバーに AlloyDB Omni をインストールして実行しておく必要があります。

  • 復元するバックアップと同じメジャー バージョンの AlloyDB Omni を実行しているターゲット データベース サーバー。AlloyDB Omni のインストールの詳細については、AlloyDB Omni をインストールするをご覧ください。

  • ソース AlloyDB Omni データベースのバックアップが 1 つ以上含まれている pgBackRest バックアップ リポジトリ。

  • 復元されたデータベースを保持するのに十分な空きディスク容量がターゲット サーバーに存在すること。

概要

pgBackRest を使用して AlloyDB Omni の復元を行うには、pgbackrest restore コマンドを実行します。コマンドに指定するパラメータは状況によって異なります。

通常、pgbackrest restore コマンドを実行するときに、次の情報を提供するフラグを指定します。

  • pgbackrest.conf ファイルの場所。
  • 復元先の pgBackRest バックアップ リポジトリの名前。これらのリポジトリは、pgbackrest.conf ファイルで名前が付けられ、定義されます。
  • 復元されたデータを書き込むローカル ファイル システム上の場所。
  • 復元元の特定のバックアップまたは特定の時点の ID。

コンテナ化された pgbackrest restore コマンドを実行する場合は、コンテナの視点からファイル システム パスを使用する必要があります。たとえば、AlloyDB Omni データ ディレクトリのパスは、ホストサーバーの場所に関係なく常に /var/lib/postgresql/data です。詳細については、ファイル システム パスに関する注意事項をご覧ください。

ポイントインタイム復元を実行する

この例では、pgBackRest リポジトリからデータを復元し、復元する特定の時点の名前を指定します。移行先環境の pgbackrest.conf ファイルで複数のリポジトリを定義している場合、pgBackRest は可用性、予想される速度などの要素に基づいて、復元元のリポジトリを選択します。

この例では、次のことを前提としています。

  • ターゲット AlloyDB Omni データ ディレクトリの最上位に pgbackrest.conf ファイルがあります。これにより、コンテナ化された pgbackrest/var/lib/postgresql/data としてファイルを使用できるようになります。

  • pgBackRest 構成で継続的なバックアップを有効にしている

  1. ターゲット環境で PITR 復元を実行し、復元するタイムスタンプを指定します。

    docker exec CONTAINER_NAME pgbackrest \
      --config-path=/var/lib/postgresql/data \
      --stanza=STANZA \
      --type=time \
      --pg1-path=/var/lib/postgresql/data/data-RESTORED \
      --target="TIMESTAMP" \
      restore

    次のように置き換えます。

    • CONTAINER_NAME: AlloyDB Omni コンテナのインストール時に割り当てた名前(例: my-omni)。

    • STANZA: この復元に適用する、pgbackrest.conf ファイルで定義された構成スタンザ(例: omni)。

    • TIMESTAMP: 復元する時刻(例: 2024-02-22 19:50:00)。

  2. ターゲット環境で、次のコマンドを使用してコンテナを停止します。

    docker container stop CONTAINER_NAME
  3. 安全上の理由から、データ ディレクトリの data サブディレクトリの名前を変更します。

    cd DATA_DIR
    sudo mv data data-OLD

    DATA_DIR は、AlloyDB Omni データ ディレクトリのファイル システム パスに置き換えます。

  4. 復元したデータを適切な場所に移動し、postgresql.auto.conf をクリーンアップします。

    sudo mv data-RESTORED data
    sudo sed -i 's|data-RESTORED|data|' data/postgresql.auto.conf
  5. データベース サーバーを使用して AlloyDB Omni コンテナを起動します。

    docker container start CONTAINER_NAME

これで、psql を使用してデータベースに接続し、データが想定どおりに復元されていることを確認できます。その場合は、先ほど作成した data サブディレクトリの data-OLD コピーを削除できます。

pgBackRest の PITR の詳細については、ポイントインタイム リカバリをご覧ください。AlloyDB Omni で使用する pgbackrest.conf ファイルを準備する方法については、AlloyDB Omni 用に pgBackRest を設定するをご覧ください。

その他のオプション

pgbackrest restore コマンドは非常に柔軟で、さまざまなコマンドライン オプションを渡してさまざまなオプションと機能を制御できます。法的根拠には次のようなものがあります。

  • 変更されたファイルのみを復元する。
  • 選択したデータベースのみを復元する。

pgBackRest で復元を行うための完全なガイドについては、復元をご覧ください。