AlloyDB Omni は PostgreSQL と互換性があるため、pgBackRest マニュアルに記載されているデータ復元コマンドや手法は AlloyDB Omni にも適用されます。このページでは、一連の一般的な復元タスクと、各タスクに関連するコマンドの例を示します。
pgBackRest を AlloyDB Omni で動作するように構成する方法については、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 構成で継続的なバックアップを有効にしている。
ターゲット環境で PITR 復元を実行し、復元するタイムスタンプを指定します。
Docker
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-omniSTANZA: この復元に適用する、pgbackrest.confファイルで定義された構成スタンザ。例:omniTIMESTAMP: 復元する時刻。例:2024-02-22 19:50:00
Podman
podman 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-omniSTANZA: この復元に適用する、pgbackrest.confファイルで定義された構成スタンザ。例:omniTIMESTAMP: 復元する時刻。例:2024-02-22 19:50:00
ターゲット環境で、次のコマンドを使用してコンテナを停止します。
Docker
docker container stop CONTAINER_NAMEPodman
podman container stop CONTAINER_NAME安全のため、データ ディレクトリの
dataサブディレクトリの名前を変更します。cd DATA_DIRsudo mv data data-OLDDATA_DIRは、AlloyDB Omni データ ディレクトリのファイル システム パスに置き換えます。復元したデータを適切な場所に移動し、
postgresql.auto.confをクリーンアップします。sudo mv data-RESTORED datasudo sed -i 's|data-RESTORED|data|' data/postgresql.auto.confデータベース サーバーを使用して AlloyDB Omni コンテナを起動します。
Docker
docker container start CONTAINER_NAMEPodman
podman container start CONTAINER_NAME
これで、psql を使用してデータベースに接続し、データが想定どおりに復元されていることを確認できます。復元されていれば、先ほど作成した data サブディレクトリの data-OLD コピーを削除できます。
pgBackRest の PITR の詳細については、ポイントインタイム リカバリをご覧ください。AlloyDB Omni で使用する pgbackrest.conf ファイルを準備する方法については、AlloyDB Omni 用に pgBackRest を設定するをご覧ください。
その他の選択肢
pgbackrest restore コマンドは柔軟性が高く、各種コマンドライン オプションを渡すことでさまざまなオプションや機能を制御できます。これには次のようなものがあります。
- 変更されたファイルのみを復元する。
- 選択したデータベースのみを復元する。
pgBackRest で復元を行うための完全なガイドについては、復元をご覧ください。