準備手順¶
このセクションには、 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ストリーミング/レプリケーションスロット」セクションを参照してください。