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_、…)で実行する必要があります。