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 の構成ファイルまたはコマンドライン引数で指定するファイル システムのパスはすべて、ホストマシンのファイル システムではなく、コンテナのファイル システム上の場所です。
このページに記載されている多くのコマンドや例では、ホストシステム上のデータ ディレクトリの場所に関係なく、データ ディレクトリを /mnt/disks/pgsql
として参照しています。これは、AlloyDB Omni がデータ ディレクトリをコンテナ化されたファイル システムの /mnt/disks/pgsql
にマウントするためです。そのため、追加の設定なしで、データ ディレクトリを pgBackRest 構成とリポジトリを保存する場所として使用できます。
AlloyDB Omni データ ディレクトリ以外のホストマシンのファイル システム上のディレクトリからの読み取り、またはディレクトリへの書き込みを行うようにコンテナ化された pgBackRest を構成する場合は、これらのディレクトリをコンテナで使用できるようにする必要があります。
ローカル バックアップを使用する基本構成
このセクションの手順では、pgBackRest の基本的な設定について説明します。これには、継続的なバックアップ データを AlloyDB Omni データ ディレクトリのサブディレクトリに書き込むように pgBackRest に指示する簡単な構成ファイルが含まれます。
pgBackRest は AlloyDB Omni と互換性のある柔軟なサードパーティ プロダクトであるため、ニーズや設定に応じてこれらの手順を変更できます。ファイル システムのパスを変更する場合は、それらがコンテナから見える場所である必要があります。ファイル システムのパスに関する注意事項をご覧ください。
信頼できる Unix ソケット認証を設定する
AlloyDB Omni ホストマシンがパスワードを要求せずにデータベース サーバーの postgres
ユーザーを認証できるようにします。これにより、後続の手順が簡素化されます。
/var/alloydb/config/pg_hba.conf
ファイルに次の行を追加します。local all postgres trust
AlloyDB Omni を再起動します。
sudo alloydb database-server stop
sudo alloydb database-server start
バックアップ リポジトリを作成して構成する
このセクションで作成する構成ファイルは、ローカルに保存される継続的バックアップの実現するための、最小限の設定例です。このファイルは、必要に応じて自由に変更できます。詳細については、クラスタ スタンザを構成するをご覧ください。
AlloyDB Omni データ ディレクトリに
backups
サブディレクトリを作成します。mkdir DATA_DIR/backups
DATA_DIR は、データ ディレクトリのファイル システムのパスに置き換えます(例:
/home/$USER/alloydb-data
)。データ ディレクトリ内に
pgbackrest.conf
という名前のファイルを作成し、次の内容をその中にコピーします。# Paths (all mandatory): repo1-path=/mnt/disks/pgsql/backups spool-path=/mnt/disks/pgsql lock-path=/mnt/disks/pgsql # 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=/mnt/disks/pgsql/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=/mnt/disks/pgsql pg1-path=/mnt/disks/pgsql/data
pgbackrest stanza-create
コマンドを使用して、バックアップの場所を初期化します。docker exec pg-service pgbackrest --config-path=/mnt/disks/pgsql --stanza=omni stanza-create
継続的なバックアップ用にデータベースを構成する
継続的なバックアップを有効にするには、次のコマンドを実行していくつかの PostgreSQL パラメータを設定します。
docker exec pg-service psql -h localhost -U postgres \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/mnt/disks/pgsql --stanza=omni archive-push %p';" \ -c "ALTER SYSTEM SET archive_mode=on;" \ -c "ALTER SYSTEM SET max_wal_senders=on;" \ -c "ALTER SYSTEM SET wal_level=replica;"
AlloyDB Omni を再起動します。
sudo alloydb database-server stop
sudo alloydb database-server start
pgBackRest コマンドを実行する
前のセクションの手順を完了すると、AlloyDB Omni サーバーで動作するように pgBackRest が構成されます。バックアップ ステータスの確認、手動バックアップの作成、その他のタスクの実行については、コマンド リファレンスをご覧ください。
ベスト プラクティスとして、pgBackRest コマンドは、AlloyDB Omni コンテナがインストールされているホストマシンから docker exec
コマンドを使用して直接実行します。たとえば、手動バックアップを作成するには、pgbackrest backup
コマンドを実行します。docker
exec
コマンド内で実行され、前に作成した構成ファイルを参照するように変更します。
docker exec pg-service pgbackrest --config-path=/mnt/disks/pgsql --stanza=omni --type=full backup
--config-path
フラグの値が /mnt/disks/pgsql
であるのは、それが常に AlloyDB Omni コンテナのファイル システム上におけるデータ ディレクトリの場所だからです。前のセクションの手順に沿って操作した場合、データ ディレクトリには、pgBackRest コマンドを正しく実行するために必要な pgbackrest.conf
ファイルが含まれているはずです。詳細については、ファイル システムのパスに関する注意事項をご覧ください。
環境変数を使用して、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 リポジトリを定義する手順は次のとおりです。
VM インスタンスに接続されているサービス アカウントがバケットに書き込めるように、バケットの権限を構成します。これには、そのサービス アカウントに Storage オブジェクト ユーザーの IAM ロールを設定する必要があります。
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 バケットの名前に置き換えます。
pgbackrest stanza-create
コマンドを使用して、クラウドベースのバックアップの場所を初期化します。docker exec pg-service pgbackrest --config-path=/mnt/disks/pgsql --stanza=omni stanza-create
pgbackrest stanza-create
コマンドを使用して Cloud Storage バケットのバックアップ リポジトリを初期化すると、pgBackRest は次の 2 つの場所にバックアップできます。
ローカル ファイル システム内の場所。構成ファイルの他の場所で
repo1-path
として定義されています。この例で設定した
repo2-
構成ディレクティブを使用して定義された Cloud Storage バケット。