AlloyDB Omni 用に pgBackRest を設定する

このページでは、オープンソースのデータベース バックアップ サーバーである pgBackRest で動作するように AlloyDB Omni を構成して、データを保護する方法について説明します。使用可能なバックアップ ソリューションの概要については、AlloyDB Omni のバックアップと復元をご覧ください。

Kubernetes ベースの情報については、Kubernetes でのバックアップと復元をご覧ください。

pgBackRest は、PostgreSQL 用の柔軟なバックアップと復元のユーティリティです。AlloyDB Omni は PostgreSQL と互換性があるため、pgBackRest を使用して、手動、スケジュール設定、継続的なバックアップを使用して AlloyDB Omni データを保護できます。

pgBackRest は、バックアップ データをローカル、リモート、またはクラウドベースのリポジトリに書き込みます。少なくとも 1 つのリポジトリを作成したら、pgBackRest を使用して、ポイントインタイム リカバリ(PITR)などのさまざまな方法で AlloyDB Omni データを復元できます。

AlloyDB Omni の Docker コンテナには pgBackRest が含まれています。つまり、追加のソフトウェアをインストールしなくても、pgBackRest を使用して AlloyDB Omni データをバックアップして復元できます。

pgBackRest の詳細については、ユーザーガイドをご覧ください。

始める前に

pgBackRest で動作するように AlloyDB Omni を構成する前に、管理するサーバーに AlloyDB Omni をインストールして実行しておく必要があります。

ファイル システム パスに関する注意事項

AlloyDB Omni に含まれている pgBackRest ソフトウェアは、AlloyDB Omni と同じ Docker コンテナで実行されます。このため、pgBackRest の構成ファイルまたはコマンドライン引数で指定するファイル システム パスはすべて、ホストマシンのファイル システムではなく、コンテナのファイル システム上の場所です。

このページのコマンドと例の多くでは、ホストシステム上のデータ ディレクトリの場所に関係なく、データ ディレクトリを /var/lib/postgresql/data と参照しています。これは、AlloyDB Omni がデータ ディレクトリをコンテナ化されたファイル システムの /var/lib/postgresql/data にマウントするためです。そのため、追加の設定なしで、データ ディレクトリを pgBackRest 構成とリポジトリを保存する場所として使用できます。

AlloyDB Omni データ ディレクトリの外にあるホストマシンのファイル システム上のディレクトリに対して読み取りまたは書き込みを行うように、コンテナ化された pgBackRest を構成する場合は、これらのディレクトリをコンテナで使用できるようにする必要があります。

ローカル バックアップを使用した基本構成

このセクションの手順では、pgBackRest の基本的な設定について説明します。これには、連続バックアップ データを AlloyDB Omni データ ディレクトリのサブディレクトリに書き込むように pgBackRest に指示する簡単な構成ファイルが含まれます。

pgBackRest は AlloyDB Omni と互換性のある柔軟なサードパーティ製プロダクトであるため、ニーズや設定に応じてこれらの手順を変更できます。ファイル システム パスを変更する場合は、コンテナに表示されるパスにする必要があります。ファイル システム パスに関する注意事項をご覧ください。

信頼できる Unix ソケット認証を設定する

AlloyDB Omni ホストマシンが、パスワードを必要とせずにデータベース サーバーの postgres ユーザーを認証できるようにします。これにより、後続の手順が簡素化されます。

  1. DATA_DIR/pg_hba.conf ファイルに次の行を追加します。

    local       all      postgres       trust
    

    DATA_DIR は、データ ディレクトリのファイル システム パスに置き換えます(例: /home/$USER/alloydb-data)。

  2. AlloyDB Omni を再起動します。

    docker restart CONTAINER_NAME

    CONTAINER_NAME は、AlloyDB Omni コンテナのインストール時に割り当てた名前に置き換えます(例: my-omni)。

バックアップ リポジトリを作成して構成する

このセクションで作成する構成ファイルは、ローカルに保存された継続的なバックアップに最小限の設定を可能にするサンプルです。このファイルは、必要に応じて変更できます。詳細については、クラスタ スタンザを構成するをご覧ください。

  1. AlloyDB Omni データ ディレクトリに backups サブディレクトリを作成します。

    mkdir DATA_DIR/backups
  2. データ ディレクトリ内に pgbackrest.conf という名前のファイルを作成し、次の内容をコピーします。

    [global]
    
    # Paths (all mandatory):
    repo1-path=/var/lib/postgresql/data/backups
    spool-path=/var/lib/postgresql/data
    lock-path=/var/lib/postgresql/data
    
    # 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=/var/lib/postgresql/data/backups
    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=/var/lib/postgresql/data
    pg1-path=/var/lib/postgresql/data/data
    
  3. pgbackrest stanza-create コマンドを使用してバックアップの場所を初期化します。

    docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni stanza-create

継続的バックアップ用にデータベースを構成する

  1. 継続的なバックアップを有効にするには、次のコマンドを実行していくつかの PostgreSQL パラメータを設定します。

    docker exec CONTAINER_NAME psql -h localhost -U postgres \
    -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/data/backups --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;"
  2. AlloyDB Omni を再起動します。

    docker restart CONTAINER_NAME

pgBackRest コマンドを実行する

前のセクションの手順を完了すると、AlloyDB Omni サーバーで動作するように pgBackRest が構成されます。バックアップのステータスを確認する、手動バックアップを作成する、その他のタスクを実行する方法については、コマンド リファレンスをご覧ください。

ベスト プラクティスとして、docker exec コマンドを使用して、AlloyDB Omni コンテナがインストールされているホストマシンから pgBackRest コマンドを直接実行します。たとえば、手動バックアップを作成するには、pgbackrest backup コマンドを使用します。docker exec コマンド内で実行され、前に作成した構成ファイルを参照するように変更します。

docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni --type=full backup

環境変数を使用して、pgBackRest 構成ファイルの場所を設定することもできます。詳細については、Config Path Option をご覧ください。

スケジュール設定されたバックアップを設定する

スケジュール設定されたバックアップを設定するには、必要な頻度で pgbackrest backup コマンドを実行する cron ジョブを作成します。詳細については、バックアップのスケジュール設定をご覧ください。

カスタム構成とリモート バックアップ

基本的な構成が機能したら、pgBackRest 構成リファレンスに記載されているオプションを使用して、ニーズと設定に合わせて構成ファイルを調整できます。

これには、リモートマシンまたはクラウドにある追加のバックアップ リポジトリの指定が含まれます。複数のリポジトリを定義すると、pgBackRest はデフォルトのバックアップ アクションとしてそれらすべてに同時に書き込みます。

たとえば、pgBackRest は、Cloud Storage バケットをバックアップ リポジトリとして使用し、関連するさまざまな構成オプションをサポートしています。次のセクションでは、これらのオプションを使用する方法の 1 つを示します。

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 リポジトリを定義する手順は次のとおりです。

  1. VM インスタンスにアタッチされているサービス アカウントがバケットに書き込めるように、バケットの権限を構成します。これには、そのサービス アカウントに Storage オブジェクト ユーザーの IAM ロールを設定する必要があります。

  2. pgbackrest.conf ファイルに次の行を追加します。

    # 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=/pgbackrest
    
    # Cloud Storage backup retention parameters:
    repo2-retention-full=8
    repo2-retention-full-type=count
    

    BUCKET_NAME は、pgBackRest でバックアップを保存する Cloud Storage バケットの名前に置き換えます。

  3. pgbackrest stanza-create コマンドを使用して、クラウドベースのバックアップ ロケーションを初期化します。

    docker exec CONTAINER_NAME pgbackrest --config-path=/var/lib/postgresql/data/backups --stanza=omni stanza-create

pgbackrest stanza-create コマンドを使用して Cloud Storage バケット内のバックアップ リポジトリを初期化すると、pgBackRest は次の 2 つの場所にバックアップします。

  • ローカル ファイル システム内の場所。構成ファイルの別の場所で repo1-path として定義されています。

  • この例で設定した repo2- 構成ディレクティブを使用して定義された Cloud Storage バケット。

次のステップ