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

    docker restart CONTAINER_NAME

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

    Podman

    podman 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

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

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

    Podman

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

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

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

Docker

  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

Podman

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

     podman 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 を再起動します。

     podman restart CONTAINER_NAME

pgBackRest コマンドを実行する

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

Docker

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

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

Podman

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

   podman 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

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

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

    Podman

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

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

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

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

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

次のステップ