1. はじめに
この Codelab では、S3 互換のオブジェクト ストレージを使用して AlloyDB Omni RPM デプロイをバックアップして復元するように pgBackRest を構成する方法について説明します。
注: この Codelab では、チュートリアルとテストの目的で、ローカルの軽量な S3 互換ストレージ エンドポイントとして機能するスタンドアロンの MinIO バイナリを VM にデプロイします。本番環境のワークロードでは、サポートされている、積極的にメンテナンスされている S3 互換のストレージ ソリューションまたはクラウド オブジェクト ストレージを常に使用してください。
前提条件
- Cloud Console から Google Cloud プロジェクトと Cloud Shell にアクセスする。
- Google Cloud SDK(
gcloud)のインストールと構成
学習内容
- AlloyDB Omni RPM 用に Compute Engine VM を設定する方法。
- VM にローカルの S3 互換オブジェクト ストレージ サーバーを設定する方法。
- S3 互換オブジェクト ストレージをバックアップ リポジトリとして使用するように pgBackRest を構成する方法。
- バックアップの実行、一覧表示、検証の方法。
- バックアップからデータを復元する方法。
必要なもの
- AlloyDB Omni RPM の URL リンクを取得します。リンクは、リポジトリ URL サーバーを含むメールで送信されます。次の環境変数を初期化して、Codelab で使用する URL を準備します。
export ALLOYDB_OMNI_REPOSITORY_URL="..." - Google Cloud にアクセスできるターミナル。この目的には Cloud Shell を使用できます。
2. 設定と要件
プロジェクトのセットアップ
Google Cloud プロジェクトの作成
- Google Cloud コンソールのプロジェクト セレクタ ページで、Google Cloud プロジェクトを選択または作成します。
- Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
Cloud Shell の起動
Google Cloud はノートパソコンからリモートで操作できますが、この Codelab では、Google Cloud Shell(Cloud 上で動作するコマンドライン環境)を使用します。

- Google Cloud コンソールを開き、右上のツールバーにある Cloud Shell アイコンをクリックします。次のいずれかの方法で Cloud Shell を開くこともできます。
- Google Cloud コンソールを使用している場合は、G キーを押してから S キーを押します。
- こちらのリンクをクリックします。
通常、環境のプロビジョニングと接続には数分かかります。このオペレーションが完了すると、次のような内容が表示されます。
{: width="624"}
3. Compute Engine VM を作成する
このセクションでは、gcloud コマンドライン ツールを使用して、単一の Compute Engine(GCE)仮想マシン(VM)を作成します。AlloyDB Omni RPM と完全に互換性のある Rocky Linux 9 イメージを使用します。
- プロジェクト ID、VM 名、マシンタイプ、ゾーン、リージョンの環境変数を定義します。
export PROJECT="your-project-id" export INSTANCE_NAME="alloydb-omni-pgbackrest" export MACHINE_TYPE="e2-standard-4" export ZONE="us-central1-c" export REGION="us-central1" - Google Cloud アカウントのユーザーを使用してログインし、デフォルトのプロジェクトを構成します。
gcloud auth login gcloud config set project $PROJECT - VM への SSH 接続を許可するファイアウォール ルールを作成します。
gcloud compute firewall-rules create allow-ssh-alloydb-omni \ --project=$PROJECT \ --direction=INGRESS \ --action=allow \ --rules=tcp:22 \ --source-ranges="0.0.0.0/0" - VM はパブリック IP アドレスなしで作成されるため、VM が外部パッケージ リポジトリにアクセスして必要なソフトウェアをダウンロードできるように、Cloud Router と Cloud NAT ゲートウェイを構成します。
gcloud compute routers create alloydb-omni-router \ --project=$PROJECT \ --network=default \ --region=$REGION gcloud compute routers nats create alloydb-omni-nat \ --project=$PROJECT \ --router=alloydb-omni-router \ --region=$REGION \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips - VPC ネットワークに有効なデフォルトのインターネット ゲートウェイ ルートがあることを確認します。一部の共有環境またはプレイグラウンド環境では、クリーンアップ スクリプトによってデフォルト ルートが削除されることがあります。このルートは、Cloud NAT がアウトバウンド トラフィックをインターネットに転送するために必要です。
gcloud compute routes create default-internet-route \ --project=$PROJECT \ --network=default \ --destination-range=0.0.0.0/0 \ --next-hop-gateway=default-internet-gateway - Rocky Linux 9 と 20 GB のバランス永続ディスクを使用して Compute Engine VM インスタンスを作成します。セキュリティを強化するには、VM にパブリック IP アドレスが割り当てられないように
--no-addressフラグを使用します。gcloud compute instances create $INSTANCE_NAME \ --project=$PROJECT \ --zone=$ZONE \ --machine-type=$MACHINE_TYPE \ --image-family=rocky-linux-9 \ --image-project=rocky-linux-cloud \ --boot-disk-size=20GB \ --boot-disk-type=pd-balanced \ --no-address - VM を作成したら、VM のステータスを確認します。
gcloud compute instances list --filter="name=$INSTANCE_NAME" --project=$PROJECT
4. S3 互換のオブジェクト ストレージを設定する
このセクションでは、VM に接続し、環境を準備して、バックアップ バケットをホストするローカルの S3 互換オブジェクト ストレージ サーバー(minio)と S3 クライアント(mc)を設定します。
- Identity-Aware Proxy(IAP)を使用して SSH 経由で VM に接続します。VM にパブリック IP アドレスがないため、
gcloudは IAP を介して SSH 接続を自動的にトンネリングします。gcloud compute ssh $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --tunnel-through-iap - 必要に応じて後で SELinux ポリシーを構成できるように、
policycoreutils-python-utilsパッケージをインストールします。sudo dnf install -y policycoreutils-python-utils - S3 互換サーバー バイナリ(
minio)をダウンロードします。curl -L -o minio \ https://github.com/minio/minio/releases/download/RELEASE.2024-05-10T01-41-38Z/minio.linux-amd64.RELEASE.2024-05-10T01-41-38Z chmod +x minio sudo mv minio /usr/local/bin/ - オブジェクト ストレージ サーバーのデータ ディレクトリを作成します。
sudo mkdir -p /var/lib/s3-storage/data - バックグラウンドで S3 互換サーバーを起動します。シークレット キーは 8 文字以上にする必要があります。
export MINIO_ROOT_USER="s3admin" export MINIO_ROOT_PASSWORD="s3password" nohup sudo env MINIO_ROOT_USER="$MINIO_ROOT_USER" \ MINIO_ROOT_PASSWORD="$MINIO_ROOT_PASSWORD" \ /usr/local/bin/minio server /var/lib/s3-storage/data \ --console-address ":9001" \ > s3-server.log 2>&1 & - S3 互換サーバーが実行されていることを確認します。
ps aux | grep minio - バケットを管理するために、S3 クライアント(
mc)をダウンロードしてインストールします。curl -L -o mc \ https://github.com/minio/mc/releases/download/RELEASE.2024-05-09T17-04-24Z/mc.linux-amd64.RELEASE.2024-05-09T17-04-24Z chmod +x mc sudo mv mc /usr/local/bin/ - S3 クライアント エイリアス(
s3repo)を構成し、alloydb-backupsという名前のバケットを作成します。mc alias set s3repo http://localhost:9000 s3admin s3password mc mb s3repo/alloydb-backups
5. AlloyDB Omni をインストールする
このセクションでは、AlloyDB Omni をインストールして構成します。
- VM で、データ ディレクトリ、AlloyDB Omni リポジトリ URL、PostgreSQL
postgres管理者ユーザーの安全なパスワードの環境変数を定義します。URL は、登録フォームから受け取ったものに置き換えます。 注: この Codelab では、コマンドラインで環境変数を使用してパスワードを渡す(export PGDATA="/var/lib/alloydbomni" export ALLOYDB_OMNI_REPOSITORY_URL="..." export PGPASSWORD="YourStrongPassword123!"PGPASSWORD=$PGPASSWORDなど)方法を簡略化のために使用していますが、この方法ではプロセス リストにパスワードが公開される可能性があります。本番環境では、.pgpassファイルやシークレット マネージャーなど、より安全な方法を使用します。 - AlloyDB Omni がデータベース ファイルを保存するデータ ディレクトリを作成します。
sudo mkdir -p $PGDATA - リポジトリ構成ファイルを作成して、VM で YUM リポジトリを構成します。
sudo tee /etc/yum.repos.d/alloydbomni.repo << EOF [alloydbomni] name=alloydbomni baseurl=$ALLOYDB_OMNI_REPOSITORY_URL enabled=1 repo_gpgcheck=0 gpgcheck=1 gpgkey=https://dl.google.com/linux/linux_signing_key.pub EOF - YUM キャッシュを更新します。
sudo yum makecache - AlloyDB Omni RPM パッケージのバージョン 18 をインストールします。
sudo dnf install -y alloydbomni18 - AlloyDB Omni データベース インスタンスを初期化します。
sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup initdb - 標準の Codelab の手順に沿って、セットアップを容易にするため、SELinux の強制モードを一時的に無効にします。
sudo setenforce 0 - AlloyDB Omni データベース インスタンスを準備します。
sudo PGPASSWORD=$PGPASSWORD PGDATA=$PGDATA /usr/lib/postgresql/18/bin/alloydbomni18-setup preparedb - AlloyDB Omni
systemdサービスを有効にして開始します。sudo systemctl enable alloydbomni18 sudo systemctl start alloydbomni18 - AlloyDB Omni サービスがアクティブで、正常に実行されていることを確認します。
sudo systemctl status alloydbomni18
6. pgBackRest を構成する
このセクションでは、AlloyDB Omni Common リポジトリから pgBackRest をインストールし、S3 互換のオブジェクト ストレージ バケットをバックアップ リポジトリとして使用するように /etc/pgbackrest/pgbackrest.conf を構成して、AlloyDB Omni で WAL アーカイブを有効にします。
- AlloyDB Omni Common リポジトリ URL の環境変数を VM に定義します。URL は、登録フォームから受け取ったものに置き換えます。
export ALLOYDB_OMNI_COMMON_REPOSITORY_URL="..." - pgBackRest YUM リポジトリを構成し、
pgbackrest-2.58.0をインストールします。sudo tee /etc/yum.repos.d/pgbackrest.repo <<EOF [pgbackrest] name=Google Alloydb Omni Orchestrator baseurl=$ALLOYDB_OMNI_COMMON_REPOSITORY_URL enabled=1 repo_gpgcheck=0 gpgcheck=0 gpgkey=https://dl.google.com/linux/linux_signing_key.pub EOF sudo dnf install -y pgbackrest-2.58.0 - pgBackRest のスプール ディレクトリとログ ディレクトリを作成し、所有権を
postgresユーザーに割り当てます。sudo mkdir -p /var/log/pgbackrest sudo mkdir -p /var/lib/pgbackrest sudo chown -R postgres:postgres /var/log/pgbackrest sudo chown -R postgres:postgres /var/lib/pgbackrest /etc/pgbackrest/pgbackrest.confを作成し、厳格なファイル権限を構成します。sudo mkdir -p /etc/pgbackrest/conf.d sudo tee /etc/pgbackrest/pgbackrest.conf <<EOF [global] spool-path=/var/lib/pgbackrest lock-path=/var/lib/pgbackrest # S3 Repository details repo1-type=s3 repo1-s3-endpoint=http://localhost:9000 repo1-s3-bucket=alloydb-backups repo1-s3-key=s3admin repo1-s3-key-secret=s3password repo1-s3-region=us-east-1 repo1-s3-uri-style=path repo1-path=/pgbackrest # Retention policy repo1-retention-full=3 repo1-retention-full-type=count repo1-retention-diff=16 # Force immediate checkpoint during backup start start-fast=y # Logging log-path=/var/log/pgbackrest log-level-console=info log-level-file=info # Compression compress-type=zst # Asynchronous WAL archiving archive-async=y archive-push-queue-max=1024MB archive-get-queue-max=256MB archive-missing-retry=y [global:archive-push] process-max=2 [global:archive-get] process-max=2 [omni] pg1-user=postgres pg1-socket-path=/tmp pg1-path=$PGDATA EOF sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf sudo chmod 640 /etc/pgbackrest/pgbackrest.confpostgresユーザーとして pgBackRest スタンザを初期化します。 出力にsudo -u postgres pgbackrest --stanza=omni stanza-createstanza-create command end: completed successfullyが表示されていることを確認します。psqlを使用して AlloyDB Omni のアーカイブ パラメータを構成します。sudo -u postgres /usr/lib/postgresql/18/bin/psql \ -c "ALTER SYSTEM SET archive_mode = 'on';" \ -c "ALTER SYSTEM SET archive_command = 'pgbackrest --stanza=omni archive-push %p';" \ -c "ALTER SYSTEM SET wal_level = 'replica';" \ -c "ALTER SYSTEM SET max_wal_senders = 10;"- AlloyDB Omni サービスを再起動して、アーカイブの変更を適用します。
sudo systemctl restart alloydbomni18 - pgBackRest 構成の完全性と接続を確認します。
出力にsudo -u postgres pgbackrest --stanza=omni checkcheck command end: completed successfullyが表示されていることを確認します。
7. バックアップを実行する
このセクションでは、pgBackRest を使用して、AlloyDB Omni データベースのフル バックアップと差分バックアップを S3 互換のオブジェクト ストレージに実行します。
pgbackrestを使用してフル バックアップをトリガーします。sudo -u postgres pgbackrest \ --stanza=omni \ --type=full backuppgbackrestを使用して差分バックアップをトリガーします。 注: 他にサポートされているバックアップ タイプには、sudo -u postgres pgbackrest \ --stanza=omni \ --type=diff backupincr(増分)があります。
8. バックアップを一覧表示して確認する
このセクションでは、バックアップを一覧表示し、正常に完了したことを確認します。
pgbackrest infoコマンドを使用してバックアップを一覧表示します。 実行した各バックアップ コマンドのバックアップ情報とともに、出力にsudo -u postgres pgbackrest \ --stanza=omni infostatus: okが表示されることを確認します。- フル バックアップ:
full backup:(F 20260908-093545Fなど) - 差分バックアップ:
diff backup:(例:F_ D 20260908-093545F_20260908-094016D)
- フル バックアップ:
- S3 クライアント(
mc)を使用して、バケットに保存されているバックアップ ファイルを確認します。 出力にmc ls s3repo/alloydb-backups/pgbackrest/backup、archive、stanza.infoが表示されます。
9. バックアップからデータを復元する
このセクションでは、AlloyDB Omni データベース サービスを停止し、pgbackrest を使用して特定のバックアップからデータを復元します。
注意: 復元すると、データベースが停止し、データベースのデータがすべて上書きされます。
- 復元するバックアップ ID の環境変数を定義します。値を
pgbackrest infoの出力に表示されているバックアップ ID に置き換えます。export BACKUPID="20260908-093545F" - AlloyDB Omni サービスを停止し、非アクティブであることを確認します。
出力にsudo systemctl stop alloydbomni18 sudo systemctl status alloydbomni18Active: inactiveが表示されていることを確認します。 --deltaオプションを指定してpgbackrest restoreを実行し、選択したバックアップからデータベースを復元します。 出力にsudo -u postgres pgbackrest \ --stanza=omni \ --set=$BACKUPID \ --delta restorerestore command end: completed successfullyが表示されていることを確認します。- AlloyDB Omni サービスを起動し、アクティブで実行中であることを確認します。
出力にsudo systemctl start alloydbomni18 sudo systemctl status alloydbomni18Active: active (running)が表示されていることを確認します。
10. クリーンアップとアンケート
Codelab が終了したら、Google Cloud リソースをクリーンアップして、不要な料金が発生しないようにします。
- VM の SSH セッションから切断して、ローカルの Cloud Shell ターミナルに戻ります。
exit - Compute Engine VM インスタンスを削除します。
gcloud compute instances delete $INSTANCE_NAME --zone=$ZONE --project=$PROJECT --quiet - SSH アクセス用に作成したファイアウォール ルールを削除します。
gcloud compute firewall-rules delete allow-ssh-alloydb-omni --project=$PROJECT --quiet - Cloud NAT ゲートウェイと Cloud Router を削除します。
gcloud compute routers nats delete alloydb-omni-nat --router=alloydb-omni-router --region=$REGION --project=$PROJECT --quiet gcloud compute routers delete alloydb-omni-router --region=$REGION --project=$PROJECT --quiet - カスタムルートを削除します。
gcloud compute routes delete default-internet-route --project=$PROJECT --quiet
11. 完了
これでこの Codelab は終了です。S3 互換のオブジェクト ストレージを使用して AlloyDB Omni RPM デプロイをバックアップして復元するように pgBackRest を正常に構成しました。
学習した内容
- AlloyDB Omni RPM 用に Compute Engine VM を設定する方法。
- S3 互換のオブジェクト ストレージ バケットを設定する方法。
- S3 互換リポジトリで pgBackRest を構成する方法。
- 完全バックアップと差分バックアップの実行、一覧表示、検証方法。
- pgBackRest を使用してバックアップからデータを復元する方法。
詳細については、AlloyDB Omni の概要をご覧ください。