準備手順

このセクションには、 BarmanでPostgreSQLサーバーをセットアップする前に実行する必要がある予備的な手順が含まれています。

重要

先に進む前に、「設計とアーキテクチャ」セクションで概説されているように、WALアーカイビングおよびバックアップ戦略に関して決定を下すことが重要です。特に、使用するWALアーカイビング方法とバックアップメソッドを決定する必要があります。

PostgreSQL接続

backup サーバーが pg 上のPostgreSQLサーバーにスーパーユーザとして接続できること、またはPostgreSQL 10以降から、データベースに接続するユーザに正しい特権セットが付与されていることを確認する必要があります。

次のように、 barman 名前付けの特定のスーパーユーザをPostgreSQLで作成できます。

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;

実際のスーパーユーザがいないと、 barman switch-wal コマンドの --force オプションが機能しないことに注意してください。

重要

上記の createuser コマンドはパスワードのプロンプトを求めます。パスワードは、 backup サーバーの ~barman/.pgpass ファイルに追加することをお勧めします。詳細については、 The Password File を参照してください。

この接続は、モニタリングを行うためだけでなく、サーバーとのアクティビティを調整オーダーにBarmanに必要です。

PostgreSQLが提供するものの中から好みのクライアント認証メソッドを選択できます。詳細については、 Client Authentication を参照してください。

続行する前に、必ず次のコマンドをテストしてください。

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のアーカイビングとレプリケーション

先に進む前に、 pg でPostgreSQLを適切に構成して、 Barmanサーバーからのストリーミングレプリケーション接続を受け入れる必要があります。 PostgreSQL文書の次のセクションをお読みください:

非常に重要な設定パラメータの1つは、 wal_level パラメータです。このパラメータは、バックアップを一貫させるために必要な保証の有用な情報がトランザクションログファイルに含まれるように構成する必要があります。

wal_level = replica

PostgreSQL 9.4以降では、ロジカルデコーディングが必要な場合に、 wal_level を logical に設定することもできます。

9.6より古いPostgreSQLバージョンの場合、 wal_level を hot_standby に設定する必要があります。

構成を更新するには、 PostgreSQLサーバーを再起動します。

PostgreSQLストリーミング接続

WALストリーミングまたはストリーミングバックアップを使用する場合は、ストリーミング接続をセットアップする必要があります。次のように、 streaming_barman 名前付けのPostgreSQLで特定のユーザを作成することをお勧めします。

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は、リモートサーバへのリモートシェルを開き、サーバーとローカルシステム間でファイルをコピーするためのプロトコルおよびツールセットです。 Digital Oceanの記事 SSH Essentials に、SSHの使用文書があります。

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 設定パラメータの値については、「archivecommandセクションを介したWALアーカイビング」で説明します。

BarmanからPostgreSQLへ

バックアップサーバとPostgreSQLサーバー間のSSH接続は、rsyncを介した従来のバックアップに使用されます。 PostgreSQLサーバーからバックアップサーバへの接続と同様に、 postgres ユーザに対してPostgreSQLサーバーのバックアップサーバの公開キーを承認する必要があります。

barman サーバーの .ssh/id_rsa.pub ファイルのコンテンツは、 PostgreSQLサーバーの .ssh/authorized_keys 名前付けのファイルに配置する必要があります。そのファイルの許可は 600 でなければなりません。

キーの交換が正常に完了した場合、次のコマンドは出力なしで成功します。

barman@backup$ ssh postgres@pg -C true
1

レプリケーションスロットはPostgreSQL 9.4で導入されました。詳細については、「WALストリーミング/レプリケーションスロット」セクションを参照してください。