準備手順¶
このセクションには、BarmanでPostgreSQLサーバーをセットアップする前に実行する必要があるいくつかの準備手順が含まれています。
重要:>先に進む前に、> _「設計とアーキテクチャ」_セクションで概説されているように、WALのアーカイビングおよびバックアップ戦略の観点から決定することが重要です。特に、あなたは> WALを使用する方法だけでなく、バックアップ>メソッドをアーカイビングかを決める必要があります。
PostgreSQL接続¶
backupサーバーがpg上のPostgreSQLサーバーにスーパーユーザとして接続できること、またはPostgreSQL
10以降から、データベースに接続するユーザに正しい特権セットが付与されていることを確認する必要があります。
次のように、barman名前付けの特定のスーパーユーザをPostgreSQLで作成できます。
postgres@pg$ createuser -s -P barman
または、次のように必要な特権セットを持つ通常のユーザを作成します。
postgres@pg$ createuser --replication -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ファイルに追加することをお勧めしますパスワード、>のためにプロンプトされます。詳細については、[ PostgreSQLドキュメントの[“パスワードファイル”セクション] [pgpass]を参照してください。
この接続は、その活動をサーバーと調整オーダー、およびモニタリング目的でBarmanに必要です。
PostgreSQLが提供するものの中から、お気に入りのクライアント認証メソッドを選択できます。詳細については、[ PostgreSQLドキュメントの[“クライアント認証”セクション] [pghba]を参照してください。
続行する前に、必ず次のコマンドをテストしてください。
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を適切に設定して、Barmanserverからのストリーミングレプリケーション接続を受け入れる必要があります。
PostgreSQLドキュメントの以下のセクションをお読みください:
[ロール属性] [ロール]
[pg_hba.confファイル] [authpghba]
[ストリーミングレプリケーションを使用したスタンバイサーバのセットアップ] [streamprot]
非常に重要な設定パラメータの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ファイルに追加することをお勧めされている>、パスワードをプロンプトされます。詳細については、[ PostgreSQLドキュメントの[“パスワードファイル”セクション] [pgpass]を参照してください。
次のコマンドを使用して、ストリーミング接続が機能することを手動で確認できます。
barman@backup$ psql -U streaming_barman -h pg \
* -c "IDENTIFY_SYSTEM" \
* replication=1
重要:>あなたはそれ以上に行く前に>ストリーミングレプリケーションを経由して接続することができますmakeください。
また、PostgreSQL構成ファイルでmax_wal_sendersパラメータを構成する必要があります。
WAL送信者の数は、実装したPostgreSQLアーキテクチャに依存します。この例では、2に設定しています。
max_wal_senders = 2
このオプションは、サーバーが管理できる同時ストリーミング接続の最大数を表します。
もう1つの重要なパラメータはmax_replication_slotsです。これは、サーバーが管理できるレプリケーションスロットの最大数[^
replslot94]を表します。このパラメータは、ストリーミング接続を使用してWALファイルを受信する場合に必要です。
max_replication_slots = 2
[^ replslot94]:レプリケーションスロットはPostgreSQL 9.4で導入されました。詳細については、「_ WALストリーミング/レプリケーションスロット」_セクションを参照してください。
max_replication_slotsおよびmax_wal_sendersに提案された値は例として考慮される必要があり、実際のセットアップで使用する値は、アーキテクチャを慎重に評価した後に選択する必要があります。ガイドラインと説明については、
PostgreSQLの文書を参照してください。
SSH接続¶
SSHは、リモートサーバシェルを開き、サーバーとローカルシステム間でファイルをコピーできるようにするプロトコルとツールのセットです。 Digital Oceanの記事[“SSH Essentials”] [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_commandsettingを使用してWALファイルを正しくアーカイブするには、
PostgreSQLサーバーからバックアップサーバサーバーへのSSH接続が必要です。
成功しBackupServerににPostgreSQLから接続するには、PostgreSQLの公開キーはbarmanユーザのためのバックアップサーバのtheauthorizedキーに設定する必要があります。
許可される公開キーは、.ssh/id_rsa.pub名前付けのファイルのpostgres
userhomeディレクトリ内に保存され、その内容は、バックアップサーバのbarmanユーザのホームディレクトリ内の.ssh/authorized_keys名前付けのファイルに含まれる必要があります。
authorized_keysファイルが存在しない場合は、600
aspermissionsを使用して作成します。
SSHキーペアの交換が正常に完了した場合、次のコマンドは出力なしで成功します。
postgres@pg$ ssh barman@backup -C true
archive_command設定パラメータの値については、_「archive_commandセクションを介したWALアーカイビング」_で説明します。
バーマンからPostgreSQLへ¶
バックアップサーバとPostgreSQLサーバー間のSSH接続は、rsyncを介した従来のバックアップに使用されます。
PostgreSQLサーバーからバックアップサーバサーバーへの接続と同様に、postgresユーザPostgreSQLバックアップサーバの公開キーを承認する必要があります。
barmanサーバーの.ssh/id_rsa.pubファイルのコンテンツは、PostgreSQLサーバーの.ssh/authorized_keys名前付けのファイルに配置する必要があります。そのファイルの許可は600でなければなりません。
キーペアの交換が正常に完了した場合、次のコマンドは出力なしで成功します。
barman@backup$ ssh postgres@pg -C true