このページでは、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 構成で継続的なバックアップを有効にしている。
ターゲット環境で 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
)。
ターゲット環境で、次のコマンドを使用してコンテナを停止します。
docker container stop CONTAINER_NAME
安全上の理由から、データ ディレクトリの
data
サブディレクトリの名前を変更します。cd DATA_DIR
sudo mv data data-OLD
DATA_DIR
は、AlloyDB Omni データ ディレクトリのファイル システム パスに置き換えます。復元したデータを適切な場所に移動し、
postgresql.auto.conf
をクリーンアップします。sudo mv data-RESTORED data
sudo sed -i 's|data-RESTORED|data|' data/postgresql.auto.conf
データベース サーバーを使用して AlloyDB Omni コンテナを起動します。
docker container start CONTAINER_NAME
これで、psql
を使用してデータベースに接続し、データが想定どおりに復元されていることを確認できます。その場合は、先ほど作成した data
サブディレクトリの data-OLD
コピーを削除できます。
pgBackRest の PITR の詳細については、ポイントインタイム リカバリをご覧ください。AlloyDB Omni で使用する pgbackrest.conf
ファイルを準備する方法については、AlloyDB Omni 用に pgBackRest を設定するをご覧ください。
その他のオプション
pgbackrest restore
コマンドは非常に柔軟で、さまざまなコマンドライン オプションを渡してさまざまなオプションと機能を制御できます。法的根拠には次のようなものがあります。
- 変更されたファイルのみを復元する。
- 選択したデータベースのみを復元する。
pgBackRest で復元を行うための完全なガイドについては、復元をご覧ください。