archive_command を介したWALアーカイブ¶
archive_command は、WALファイルをアーカイブする従来の方法です。
このPostgreSQL構成パラメーターの値は、WALファイルをBarman着信ディレクトリにコピーするためにPostgreSQLサーバーによって実行されるシェルコマンドである必要があります。
これは 2 つの方法で実行できます。どちらも SSH 接続が必要です。
barman-wal-archiveユーティリティを介して( Barman 2.6から)rsync / SSH経由( Barman 2.6より前の一般的なアプローチ)
詳細については、以下のセクションを参照してください。
重要
Barmanがこの機能をサポートする方法の詳細については、「スタンバイからの同時バックアップ」セクションをお読みください。
barman-wal-archive を介したWALアーカイブ¶
Barman 2.6から、 archive_command
を介してWALファイルをBarmanに安全かつ確実にアーカイブするための
推奨される方法
は、EnterpriseDBパブリックリポジトリを介して配布され、GNU GPL
3ライセンスで利用可能なbarman-cli パッケージに含まれる
barman-wal-archive コマンドを使用することです。 barman-cli は、
Barmanクラスターの一部である各PostgreSQLサーバーにインストールする必要があります。
rsync/SSHの代わりにbarman-wal-archive を使用すると、
Barmanサーバーに出荷されたWALファイルのデータが破損するリスクが軽減されます。
rsync/SSHをarchive_command
WALファイルとして使用する場合、ファイルの内容が宛先のディスクにフラッシュされてfsyncされることを保証するメカニズムはありません。
このため、Barmanのput-wal
コマンド(2.6で導入)とネイティブに通信するbarman-wal-archive
ユーティリティを開発しました。したがって、 barman-wal-archive は、
Barmanの間違った場所/ディレクトリにWALファイルをコピーするリスクを減らします。
archive_command で使用される唯一のパラメーターはサーバーのIDです。
barman-wal-archive
コマンドの詳細については、PostgreSQLサーバーでman barman-wal-archive
と入力してください。
次のコマンドを使用して、 barman-wal-archive
がBarmanサーバーに接続できること、および必要なPostgreSQLサーバーがBarmanで着信WALファイルを受け入れるように構成されていることを確認できます。
barman-wal-archive --test backup pg DUMMY
backup はBarmanがインストールされているホスト、 pg
はBarmanで構成されたPostgreSQLサーバーの名前であり、
DUMMYはプレースホルダーです(barman-wal-archive
にはWALファイル名の引数が必要ですが、無視されます)。
すべてが正しく構成されている場合、次の出力が表示されます。
Ready to accept WAL files for the server pg
Barmanサーバーとの通信にSSHを使用するため、 postgres
ユーザーがバックアップサーバーにbarman
としてログインするにはSSHキー認証が必要です。
SSHのデフォルトの22以外のポートを使用する必要がある場合は、 --port
オプションを追加して、SSH接続に使用するポートを指定できます。
pg データベース上のPostgreSQLインスタンスのpostgresql.conf
ファイルを編集し、アーカイブモードを有効にし、archive_command
がbarman-wal-archive を使用するように設定します。
archive_mode = on
wal_level = replica
archive_command = barman-wal-archive backup pg %p
次に、PostgreSQLサーバーを再起動します。
rsync / SSHを介したWALアーカイブ¶
show-servers Barmanコマンドを使用し、 incoming_wals_directory
値を探して、着信WALディレクトリを取得できます。
barman@backup$ barman show-servers pg |grep incoming_wals_directory
incoming_wals_directory: /var/lib/barman/pg/incoming
pg データベース上のPostgreSQLインスタンスのpostgresql.conf
ファイルを編集し、アーカイブモードを有効にします。
archive_mode = on
wal_level = replica
archive_command = rsync -a %p barman@backup:INCOMING_WALS_DIRECTORY/%f
INCOMING_WALS_DIRECTORY
プレースホルダーを、上記のbarman show-servers pg
コマンドによって返された値に変更してください。
PostgreSQLサーバーを再起動します。
場合によっては、 archive_command
プロセスに厳密なチェックを追加することができます。たとえば、一部のユーザーは次のことを提案しています。
archive_command = test $(/bin/hostname --fqdn) = HOSTNAME \
&& rsync -a %p barman@backup:INCOMING_WALS_DIRECTORY/%f
HOSTNAME プレースホルダーは、 hostname --fqdn
によって返される値に置き換える必要があります。このトリックは、サーバーが複製され、復元されたPostgreSQLインスタンスからWALファイルを受信しないようにする場合の安全対策です。
WALアーカイブ構成の検証¶
継続的アーカイブがオンになっていて正常に動作していることをテストするには、PostgreSQLサーバーとバックアップサーバーの両方を確認する必要があります。特に、WALファイルが宛先ディレクトリに正しく収集されていることを確認する必要があります。
この目的のために、およびWALアーカイブプロセスの検証を容易にするために、
switch-wal コマンドが開発されました。
barman@backup$ barman switch-wal --force --archive pg
上記のコマンドは、PostgreSQLにWALファイルを強制的に切り替え、
Barmanでアーカイブプロセスをトリガーします。
Barmanは30秒以内に1つのファイルが到着するのを待ちます(タイムアウトは
--archive-timeout オプションで変更できます)。
WALファイルを受信しない場合、エラーが返されます。
barman check
コマンドを使用して、WALアーカイブが正しく構成されているかどうかを確認できます。