準備手順¶
このセクションには、 BarmanでPostgreSQLサーバーをセットアップする前に行う必要があるいくつかの準備手順が含まれています。
重要
続行する前に、「設計とアーキテクチャ」セクションで説明されているように、WALのアーカイブとバックアップの戦略を決定することが重要です。特に、使用するWALアーカイブ方法とバックアップ方法を決定する必要があります。
PostgreSQL接続¶
backup サーバーがpg
上のPostgreSQLサーバーにスーパーユーザーとして接続できること、またはPostgreSQL
10以降では、データベースに接続するユーザーに適切な特権セットが付与されていることを確認する必要があります。
次のように、PostgreSQLにbarman
という名前の特定のスーパーユーザーを作成できます。
postgres@pg$ createuser -s -P barman
または、次のように必要な権限セットを持つ通常のユーザーを作成します。
postgres@pg$ createuser -P barman
GRANT EXECUTE ON FUNCTION pg_start_backup(text, boolean, boolean) to barman;
GRANT EXECUTE ON FUNCTION pg_stop_backup() to barman;
GRANT EXECUTE ON FUNCTION pg_stop_backup(boolean, boolean) to barman;
GRANT EXECUTE ON FUNCTION pg_switch_wal() to barman;
GRANT EXECUTE ON FUNCTION pg_create_restore_point(text) to barman;
GRANT pg_read_all_settings TO barman;
GRANT pg_read_all_stats TO barman;
PostgreSQL 15ベータ版およびそれ以降のPostgreSQLバージョンでは、関数
pg_start_backup および pg_stop_backup
の名前が変更され、シグネチャが異なります。したがって、上記のブロックの最初の3行を次のように置き換える必要があります。
GRANT EXECUTE ON FUNCTION pg_backup_start(text, boolean) to barman;
GRANT EXECUTE ON FUNCTION pg_backup_stop(boolean) to barman;
実際のスーパーユーザーなしでは、 barman switch-wal
コマンドの--force オプションは機能しないことに注意してください。
重要
上記の`createuser` コマンドはパスワードの入力を求めます。次に、パスワードを`backup` サーバー上の`~barman/.pgpass` ファイルに追加するように勧められます。詳細については、 The Password File を参照してください。
この接続は、 Barmanがサーバーとのアクティビティを調整したり、監視したりするために必要です。
- PostgreSQLが提供するクライアント認証方法から好きな方法を選択できます。詳細については、
Client Authentication を参照してください。
backup ホストがpg
ホスト上のPostgreSQLに接続できることを確認するには、 backup
ホストでbarmanユーザとして次のコマンドを実行します。
barman@backup$ psql -c SELECT version() -U barman -h pg postgres
上記の情報(ユーザー名、ホスト名、データベース名)を書き留めて、後で使用します。次の例のように、サーバー構成のconninfo
オプションで必要になります。
[pg]
; ...
conninfo = host=pg user=barman dbname=postgres
注釈
Barmanは、PostgreSQLサーバー9.0以降の`application_name` 接続オプションを尊重します。
PostgreSQL WALアーカイブとレプリケーション¶
続行する前に、
Barmanサーバーからのストリーミングレプリケーション接続を受け入れるように、
pg でPostgreSQLを適切に構成する必要があります。
PostgreSQLドキュメントの次のセクションをお読みください。
非常に重要な構成パラメーターの1つは、 wal_level
パラメーターです。バックアップの一貫性を保つために必要なすべての有用な情報がトランザクションログファイルに含まれるように、このパラメーターを構成する必要があります。
wal_level = replica
PostgreSQL 9.4以降では、論理デコードが必要な場合に、wal_level
をlogical に設定することもできます。
9.6より前のPostgreSQLバージョンでは、 wal_level をhot_standby
に設定する必要があります。
構成を更新するためにPostgreSQLサーバーを再起動します。
PostgreSQLストリーミング接続¶
WALストリーミングまたはストリーミングバックアップを使用する場合は、ストリーミング接続を設定する必要があります。次のように、PostgreSQLにstreaming_barman
という名前の特定のユーザーを作成することをお勧めします。
postgres@pg$ createuser -P --replication streaming_barman
重要
上記のコマンドはパスワードの入力を求めます。次に、パスワードを`backup` サーバー上の`~barman/.pgpass` ファイルに追加するように勧められます。詳細については、 The Password File を参照してください。
次のコマンドを使用して、ストリーミング接続が機能することを手動で確認できます。
barman@backup$ psql -U streaming_barman -h pg \
-c "IDENTIFY_SYSTEM" \
replication=1
重要
続行する前に、ストリーミングレプリケーションを介して接続できることを確認してください。
PostgreSQL構成ファイルでmax_wal_senders
パラメーターを構成する必要もあります。
WAL送信者の数は、実装したPostgreSQLアーキテクチャによって異なります。この例では、
2 に設定しています。
max_wal_senders = 2
このオプションは、サーバーが管理できる同時ストリーミング接続の最大数を表します。
もう1つの重要なパラメーターはmax_replication_slots
で、サーバーが管理できるレプリケーションスロット [1]
の最大数を表します。このパラメーターは、ストリーミング接続を使用してストリーミング接続を介してWALファイルを受信する予定がある場合に必要です。
max_replication_slots = 2
max_replication_slots およびmax_wal_senders
に提案された値は例として検討する必要があり、実際のセットアップで使用する値は、アーキテクチャを注意深く評価した後に選択する必要があります。ガイドラインと説明については、PostgreSQLのドキュメントを参照してください。
SSH接続¶
SSHは、リモートサーバーへのリモートシェルを開き、サーバーとローカルシステム間でファイルをコピーできるようにするプロトコルおよびツールのセットです。 SSHの使用に関するその他のドキュメントは、Digital Oceanの記事
SSH Essentials にあります。
SSHキー交換は、異なるマシン上のユーザー間の安全なパスワードレス接続を実装するために使用される非常に一般的な方法であり、WALアーカイブとバックアップに
rsync を使用する必要があります。
注釈
トランザクションログのアーカイブとPostgreSQLサーバーのバックアップのみにストリーミング接続を使用する場合、この手順は必要ありません。
[ssh_essentials]:https://www.digitalocean.com/community/tutorials/ssh-essentials-working-with-ssh-servers-clients-and-keys
postgresユーザーのSSH構成¶
以前に行ったことがない限り、PostgreSQLユーザーのSSHキーを作成する必要があります。
pg ホストにpostgres としてログインし、次のように入力します。
postgres@pg$ ssh-keygen -t rsa
このキーはパスワードを入力せずにホストから接続するために使用する必要があるため、キーペアの作成中にパスフレーズを入力しないでください。
barmanユーザーのSSH設定¶
前の段落のように、 BarmanユーザーのSSHキーを作成する必要があります。
backup ホストにbarman としてログインし、次のように入力します。
barman@backup$ ssh-keygen -t rsa
同じ理由で、パスフレーズは入力しないでください。
PostgreSQLからBarmanへ¶
archive_command
設定を使用してWALファイルを正しくアーカイブするには、PostgreSQLサーバーからバックアップサーバーへのSSH接続が必要です。
PostgreSQLサーバーからバックアップサーバーに正常に接続するには、PostgreSQL公開キーをbarman
ユーザーのバックアップサーバーの承認済みキーに構成する必要があります。
認証される公開鍵は、 postgres
ユーザーのホームディレクトリ内の.ssh/id_rsa.pub
という名前のファイルに保存され、その内容は、バックアップサーバーのbarman
ユーザーのホームディレクトリ内の.ssh/authorized_keys
という名前のファイルに含まれる必要があります。 authorized_keys
ファイルが存在しない場合は、 600
をパーミッションとして使用して作成します。
SSHキーペアの交換が正常に完了した場合、次のコマンドは出力なしで成功します。
postgres@pg$ ssh barman@backup -C true
archive_command
構成パラメーターの値については、「archiveコマンドによるWALアーカイブ」で説明します。
BarmanからPostgreSQLへ¶
バックアップサーバーとPostgreSQLサーバー間のSSH接続は、rsyncを介した従来のバックアップに使用されます。
PostgreSQLサーバーからバックアップサーバーへの接続と同様に、PostgreSQLサーバーでpostgres
ユーザーのバックアップサーバーの公開キーを承認する必要があります。
barman サーバーの.ssh/id_rsa.pub
ファイルの内容は、PostgreSQLサーバーの.ssh/authorized_keys
という名前のファイルに配置する必要があります。そのファイルのアクセス許可は600
である必要があります。
キーペアの交換が正常に完了した場合、次のコマンドは出力なしで成功します。
barman@backup$ ssh postgres@pg -C true