pgBackRest の詳細については、 ユーザーガイドをご覧ください。
始める前に
pgBackRest と連携するように AlloyDB Omni を構成するには、前提条件となる次の操作を完了しておく必要があります。
ローカル バックアップを使用する基本構成
このセクションでは、pgBackRest の基本的な設定方法について説明します。基本構成では、スケジュールに基づくバックアップは有効になりません。詳細については、スケジュール バックアップを設定するをご覧ください。
pgBackRest は AlloyDB Omni に対応した柔軟なサードパーティ プロダクトであるため、これらの手順はニーズや好みに応じて変更できます。
バックアップ ディレクトリを作成する
整理された構成にするために、pgBackRest バックアップ用に別のディレクトリを作成することを強くおすすめします。新しいディレクトリを設定する手順は次のとおりです。
AlloyDB Omni が実行されている場合は、停止します。
sudo systemctl stop alloydbomni18
バックアップ ディレクトリを作成します。
sudo mkdir -p BACKUP_DIR
BACKUP_DIRは、バックアップが保存されるホスト ディレクトリに置き換えます。バックアップ ディレクトリを
postgresが読み取れるようにします。sudo chown -R postgres:postgres BACKUP_DIR
ローカル バックアップを構成する
pgBackRest は、実行されたバックアップごとにサブディレクトリを作成し、プレーンテキストのマニフェスト ファイルを配置します。
pgBackRest では、PostgreSQL データベース クラスタの構成を「スタンザ」という用語で表します。スタンザ名は任意です。ホストサーバー、PostgreSQL クラスタ、データベース名と一致させる必要はありません。pgBackRest のドキュメントでは、スタンザにクラスタの役割を反映した名前を付けることを推奨しています。
リポジトリは、バックアップが書き込まれる場所です。pgBackRest は、特定のスタンザ内の複数のリポジトリへの書き込みをサポートしています。リポジトリに関連するほとんどの構成パラメータには、数値のインデックスが付いています(例: repo1-)。PostgreSQL クラスタに関連するパラメータにも、個別にインデックスが付いています(例: pg1-)。
pgBackRest は、pgbackrest.conf という構成ファイルを使用してグローバル パラメータとスタンザ固有のパラメータを保持します。
[global]
# Paths (all mandatory):
repo1-path=BACKUP_DIR
spool-path=BACKUP_DIR/spool
lock-path=BACKUP_DIR
# Retention details:
repo1-retention-full=3
repo1-retention-full-type=count
repo1-retention-diff=16
# Force a checkpoint to start backup immediately:
start-fast=y
# Logging parameters:
log-path=BACKUP_DIR
log-level-console=info
log-level-file=info
# Recommended ZSTD compression:
compress-type=zst
# Other performance parameters:
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=DATA_DIR
一部のパラメータは必須ですが、必要な場合、次のようなパラメータは特定の要件に合わせて調整できます。
repo1-path: バックアップが書き込まれるディレクトリの場所。ホストサーバーだけでなく、コンテナからも確認できる場所をおすすめします。log-path: ログファイルが書き込まれるディレクトリの場所。ログファイルをバックアップ自体と混在させずに別の場所に書き込む場合は、このパラメータを調整します。repo1-retention-full: 保持するフル バックアップの数。repo1-retention-full-type: 保持の基準として、数と期間(日数)のいずれを使用するか。repo1-retention-diff: 保持する差分バックアップの数。
構成ファイルにおける、AlloyDB Omni に対応した、最重要ではないものの推奨される他のパラメータ設定には、次のようなものがあります。
log-level-console: pgBackup コマンドを実行するときに画面(STDOUT)に書き込まれるロギングのレベル。この値は、構成ファイルでニーズに合わせて調整できます。また、--log-level-consoleコマンドライン引数でこの値をオーバーライドすることもできます。デフォルトはwarnです。start-fast: チェックポイントを強制的に実行して、バックアップを迅速に開始します。デフォルトはnです。archive-async: パフォーマンスを向上させるため、WAL セグメント ファイルを非同期で push します。デフォルトはnです。process-max: 圧縮と転送に使用するプロセスの最大数。通常、プライマリ クラスタにはmax_cpu/4、スタンバイ クラスタにはmax_cpu/2に設定します。デフォルトは1です。compress-type: 使用する圧縮アルゴリズム。デフォルトはgzです。
このほかにも多数の pgBackRest 構成パラメータが存在し、調整可能です。このドキュメントでは、デフォルトの AlloyDB Omni 構成に必須のパラメータと、一部の推奨されるパラメータ設定についてのみ説明しています。構成パラメータの一覧については、pgBackRest 構成リファレンスのオンライン ドキュメントをご覧ください。
pgBackRest を構成したら、バックアップが書き込まれるターゲット リポジトリを初期化する必要があります。これは、構成ファイルで設定されているパラメータを使用するスタンザを作成することで行います。
バックアップ用にデータベースを構成する手順は次のとおりです。
stanza-createコマンドを使用してスタンザを作成します。sudo -u postgres pgbackrest \ --config-path=/var/lib/BACKUP_DIR \ --stanza=omni stanza-create
バックアップ用にデータベースを構成します。
/usr/lib/postgresql/18/bin/psql -h localhost -U postgres \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/BACKUP_DIR --stanza=omni archive-push %p';" \ -c "ALTER SYSTEM SET archive_mode=on;" \ -c "ALTER SYSTEM SET max_wal_senders=10;" \ -c "ALTER SYSTEM SET wal_level=replica;"
AlloyDB Omni を再起動します。
sudo systemctl restart alloydbomni18
バックアップ構成を検証します。
/usr/lib/postgresql/18/bin/psql -h localhost -U postgres \ -c "SELECT name, setting FROM pg_catalog.pg_settings WHERE name IN ('archive_command', 'archive_mode', 'max_wal_senders', 'wal_level') ORDER BY name"pgBackRest チェックを実行します。
sudo -u postgres pgbackrest \ --config-path=/var/lib/BACKUP_DIR \ --stanza=omni \ check
バックアップを実施する
フル バックアップを実行します。
sudo -u postgres pgbackrest \ --config-path=/var/lib/BACKUP_DIR \ --stanza=omni \ --type=full backup
差分バックアップを実行します。
sudo -u postgres pgbackrest \ --config-path=/var/lib/BACKUP_DIR \ --stanza=omni \ --type=diff backup
バックアップの状況を表示します。
sudo -u postgres pgbackrest \ --config-path=/var/lib/BACKUP_DIR \ --stanza=omni \ info
スケジュールされたバックアップを設定する
スケジュールされたバックアップを設定するには、必要な頻度で pgbackrest backup コマンドを実行する cron ジョブを作成します。詳細については、バックアップのスケジュールを設定するをご覧ください。
カスタム構成とリモート バックアップ
基本的な構成が機能するようになったら、pgBackRest 構成リファレンスに記載されているオプションを使用して、ニーズと好みに合わせて構成ファイルを調整できます。
たとえば、リモートマシンやクラウドにあるバックアップ リポジトリを追加で指定できます。複数のリポジトリを定義すると、pgBackRest はデフォルトのバックアップ アクションとしてそれらすべてに同時に書き込みます。
たとえば、pgBackRest は、Cloud Storage バケットをバックアップ リポジトリとして使用し、関連する多くの構成オプションをサポートしています。次のセクションでは、これらのオプションの使用例を示します。
Cloud Storage を使用した構成例
このセクションの手順では、ローカル バックアップを使用した基本構成で説明した構成ファイルを使用します。このファイルに対するこれらの変更により、Identity and Access Management(IAM)を介してアクセスされる Cloud Storage バケットに 2 番目のバックアップ リポジトリが定義されます。
この例の自動認証スタイルでは、Compute Engine VM インスタンスで AlloyDB Omni クラスタを実行する必要があります。Compute Engine VM インスタンスで AlloyDB Omni を実行していない場合でも、ローカル ファイル システムに保存された Google Cloud サービス アカウント キーなど、別の認証方法を使用することで、Cloud Storage バケットに引き続きバックアップを行うことができます。
前の構成ファイルを拡張して Cloud Storage ベースの pgBackRest リポジトリを定義する手順は次のとおりです。
VM インスタンスに接続されているサービス アカウントがバケットに書き込めるように、バケットの権限を構成します。これには、そのサービス アカウントに Storage オブジェクト ユーザーの IAM ロールを設定する必要があります。
pgbackrest.confファイルの[global]セクションに次の行を追加します。# Cloud Storage access details: repo2-type=gcs repo2-gcs-key-type=auto repo2-storage-verify-tls=n # Cloud Storage bucket and path details: repo2-gcs-bucket=BUCKET_NAME repo2-path=PATH_IN_BUCKET # Cloud Storage backup retention parameters: repo2-retention-full=8 repo2-retention-full-type=count次の変数を置き換えます。
BUCKET_NAME: pgBackRest にバックアップを保存する Cloud Storage バケットの名前。PATH_IN_BUCKET: pgBackRest でバックアップを保存する Cloud Storage バケット内のディレクトリ パス。
pgbackrest stanza-createコマンドを使用して、クラウドベースのバックアップ ロケーションを初期化します。sudo -u postgres pgbackrest \ --config-path=/var/lib/BACKUP_DIR \ --stanza=omni stanza-create
pgbackrest stanza-create コマンドを使用して Cloud Storage バケットのバックアップ リポジトリを初期化すると、pgBackRest は次の 2 つの場所にバックアップできます。
ローカル ファイル システム内の場所。構成ファイルの他の場所で
repo1-pathとして定義されています。これは、pgbackrestコマンドで--repoが指定されていない場合のデフォルトの場所です。この例で設定した
repo2-gcs-bucket構成ディレクティブを使用して定義された Cloud Storage バケット。Cloud Storage バケットを使用するには、pgbackrestコマンドで--repo=2を指定します。