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

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

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

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

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

始める前に

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

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

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

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

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

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

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

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

    sudo docker exec pg-service pgbackrest \
      --config-path=/mnt/disks/pgsql \
      --stanza=STANZA \
      --type=time \
      --pg1-path=/mnt/disks/pgsql/data-RESTORED \
      --target="TIMESTAMP" \
      restore

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

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

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

  2. ターゲット環境でデータベース サーバーを停止します。

    sudo alloydb database-server stop
  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. データベース サーバーを起動します。

    sudo alloydb database-server start

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

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

その他の選択肢

pgbackrest restore コマンドは柔軟性が高く、各種コマンドライン オプションを渡すことでさまざまなオプションや機能を制御できます。これには次のようなものがあります。

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

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