Running pgBackRest from a Dedicated Repository Host’

説明

  • pgBackRestは専用のバックアップサーバーで実行され、ローカルまたはリモートのストレージ(NFS、S3、AzureまたはGCS互換のオブジェクトストア)にリポジトリを保存します。

*プライマリデータベースクラスターからバックアップを取得するcronタスクがアクティブです。

  • 別のサーバーからバックアップを取得するようにcronタスクを手動で再構成します。

! Use case diagram

リポジトリホストで専用ユーザーを作成する

pgbackrest ユーザーは、バックアップとアーカイブのリポジトリを所有するために作成されます。すべてのユーザーがリポジトリを所有できますが、混乱を避けるために postgres または enterprisedb を使用しないことをお勧めします。

$ sudo groupadd pgbackrest
$ sudo adduser -g pgbackrest -n pgbackrest
$ sudo chown pgbackrest: /var/log/pgbackrest

パスワードレスSSH接続のセットアップ

pgBackRestでは、ホスト間の通信を有効にするためにパスワードなしのSSH接続が必要です。

次のSSHコマンドの例は、パスワードの入力を求めずに成功します。

#  From the PostgreSQL nodes

$ sudo -u postgres ssh pgbackrest@backup-server

#  From the EDB Postgres Advanced Server nodes

$ sudo -u enterprisedb ssh pgbackrest@backup-server

#  From the repository host

$ sudo -u pgbackrest ssh postgres@postgres-node-1
$ sudo -u pgbackrest ssh postgres@postgres-node-2
$ ...

構成

バックアップサーバー

リポジトリは、バックアップサーバーから到達可能である必要があります。

first use case で説明されているさまざまなサポートされているタイプにあります。

たとえば、バックアップとアーカイブをローカルに保存する /backup_space を作成しましょう。

$ sudo mkdir /backup_space
$ sudo chown pgbackrest: /backup_space

構成ファイルの [global] セクションは次のようになります。

[global]
repo1-path=/backup_space
repo1-retention-full=2
repo1-cipher-type=aes-256-cbc
repo1-cipher-pass=FIXME
process-max=FIXME
log-level-console=info
log-level-file=debug
start-fast=y
delta=y

暗号化パスフレーズと、圧縮の使用とファイル転送に使用するプロセスの最大数を調整します。

詳細については、 'Recommended Settings' のページを参照してください。

[demo] スタンザセクションには、データベースノードごとに特定のpg- オプションが含まれます。

  • PostgreSQL のプライマリデータベースサーバー構成

pg1-host=postgres-node-1
pg1-path=/var/lib/pgsql/13/data

または EDBPostgresAdvancedServer

pg1-host=postgres-node-1
pg1-host-user=enterprisedb
pg1-path=/var/lib/edb/as13/data
  • 他のすべての PostgreSQL ノード

pg2-host=other_node_hostname_or_ip
pg2-path=/var/lib/pgsql/13/data

または EDBPostgresAdvancedServer

pg2-host=other_node_hostname_or_ip
pg2-host-user=enterprisedb
pg2-path=/var/lib/edb/as13/data

pg2 、pg3 、…を使用して複数のノードを定義して、それらのサーバーが使用可能な場合にのみスタンバイサーバーに到達します。

データベースサーバー

データベースサーバー上のpgBackRest構成ファイルを更新します。

#  pgbackrest.conf

[global]
repo1-host=backup-server
repo1-host-user=pgbackrest
log-level-console=info
log-level-file=debug
delta=y

[demo]
pg1-path=/var/lib/pgsql/13/data
recovery-option=primary_conninfo=host=primary_vip user=replication_user ...

詳細については、` demo ページ。

アーカイブの設定

pgBackRestを構成したら、各ノードでデータベースアーカイバープロセスを設定します。

#  postgresql.conf

archive_mode = on
archive_command = pgbackrest --stanza=demo archive-push %p

archive_mode パラメーターを変更するにはサービスの再起動が必要であり、 archive_command を変更するには構成のリロードのみが必要であるため、新しいデータベースクラスターを開始するときに空のarchive_command でarchive_mode を有効にすることをお勧めします。

バックアップサーバー(リポジトリホストとも呼ばれます)から、前に作成したシステムユーザーでpgBackRestリポジトリを開始します。

$ sudo -u pgbackrest pgbackrest --stanza=demo stanza-create

構成とアーカイブプロセスを確認します。

$ sudo -u pgbackrest pgbackrest --stanza=demo check

バックアップと復元

これら2つのコマンドの詳細については、 クイックスタート の バックアップ および 復元 セクションを参照してください。

backup コマンドはリポジトリホスト(別名_backup-server_)で実行されますが、 restore コマンドはデータベースノード(別名_postgres-node-1_、…)で実行する必要があります。

用語集

pgBackRest

PostgreSQL