WALアーカイブ#
Barmanは、WALアーカイブに関する追加機能も提供します。
WAL圧縮#
Barmanは、BarmanのWALアーカイブに入るときにWALファイルを圧縮できます。このプロセスは、 barman cron によって自動的に処理されるか、 barman archive-wal コマンドが手動で実行されたときに処理されます。
圧縮は、構成ファイルの compression オプションを介して有効にされます。オプションでは、次のいずれかの値を使用できます。
lz4LZ4圧縮用lz4ライブラリをインストールする必要があります。xzXZ圧縮用Pythonの内部圧縮ライブラリを使用します。zstdZstandard圧縮用zstandardライブラリをインストールする必要があります。gzipGzip圧縮用Pythonの内部圧縮ライブラリを使用します。pygzipGzip圧縮用現在はgzipと同じです非推奨。pigzPigz圧縮用pigzユーティリティが必要です。bzip2Bzip2圧縮用Pythonの内部圧縮ライブラリを使用します。pybzip2Bzip2圧縮用現在はbzip2と同じです非推奨。customカスタム圧縮用。同様に次のオプションを設定する必要がありますcustom_compression_filter、custom_decompression_filter、custom_compression_magic。詳細については、customを確認してください。非推奨
バージョン 3.16 で非推奨: pygzip および pybzip2 圧縮オプションは非推奨であり、将来のリリースでは削除される予定です。代わりに、同等の gzip および bzip2 を使用してください。
バージョン 3.17 で非推奨: custom 圧縮オプションと関連する構成オプション custom_compression_filter 、 custom_decompression_filter 、および custom_compression_magic は非推奨であり、将来のリリースでは削除されます。代わりに、ビルトイン圧縮アルゴリズムのいずれかを使用します。
注釈
pigz を使用する場合Barmanは、圧縮のための新しいプロセスをフォークします。
重要
Barmanは、各WALファイルが圧縮された方法や解凍方法に関するメタデータを保存しません。これは、主にサーバーの現在の構成に依存します。したがって、 compression = custom を使用する場合、 custom_decompression_filter がアーカイブで現在使用可能なWALとの互換性を維持していることを確認する必要があります。たとえば、 custom_decompression_filter が途中で別の圧縮アルゴリズムに変更された場合、 Barmanは、復元時に、以前の圧縮アルゴリズムでアーカイブされた古いWALを解凍できません。
compression_level 構成を使用して圧縮レベルを指定することもできます。有効な値は、選択したアルゴリズムまたは事前定義されたラベルのいずれか low 、 medium 、および high のサポートされている範囲内の整数です。各アルゴリズムの範囲と、各事前定義されたラベルがマップするレベルは compression_level で見つかります。
barman-wal-archive を使用して archive_command を介してアーカイブする場合、選択したアルゴリズムとレベルで --compression および --compression-level オプションを使用して圧縮を構成することもできます。このような場合、圧縮はWALがBarmanサーバーに送信される前に、クライアント側で実行されます。 archive_command を参照してください。
注釈
barman-wal-archive で圧縮が有効になっている場合、 Barmanサーバーで構成された圧縮設定が異なる場合、それが優先されます。
重要
barman-wal-archive で圧縮が有効になっている場合、ファイルがBarmanに送信される前に、クライアント側で実行されます。圧縮率を高くするとWALのシッピングが遅延し、WALファイルが蓄積される可能性があるため、データベースサーバーの負荷と選択した圧縮アルゴリズムとレベルに注意してください。
WAL暗号化#
Barmanは、WALファイルがBarmanのWALアーカイブに入るときに暗号化できます。このプロセスは、 barman cron によって自動的に処理されるか、 barman archive-wal コマンドが手動で実行されたときに処理されます。
WALとバックアップの暗号化は両方とも、構成ファイルの encryption オプションを介して有効になります。現在、 gpg および none 暗号化なしのみが値として受け入れられます。暗号化の構成方法に関する詳細なガイドは、 encryption で利用できます。
同期WALストリーミング#
Barmanは、同期スタンバイサーバーのようにトランザクションWALファイルを収集することにより、`RPO`をゼロに削減することもできます。
`RPO`ゼロを使用してシナリオを構成するには、ストリーミング接続を介してWALをアーカイブするようにBarmanサーバーを構成し、receive-walプロセスをPostgresサーバーへの同期接続として構成する必要があります。
最初に、 show-servers コマンドを使用してBarman require-walプロセスのアプリケーション名を取得する必要があります。
barman show-servers pg | grep streaming_archiver_name
出力
streaming_archiver_name: barman_receive_wal
注釈
accept-walプロセスを開始するときにBarmanが使用するアプリケーション名は、 streaming_archiver_name 構成オプションで構成されます。このオプションのデフォルト値は barman_receive_wal です。
次に、アプリケーション名を postgresql.conf ファイルの synchronous_standby_names パラメーターに追加する必要があります。
synchronous_standby_names = 'barman_receive_wal'
重要
このトピックの詳細については、Barman:term: RPO zero adds more security to your backups and gives you more recovery options. However, it should not be considered as a substitution of a real Postgres replica. Please read the official Postgres documentation about /"Syncronous Replication/" 。
変更を有効にするには、Postgresサーバー構成をリロードする必要があります。
サーバーが正しく構成されている場合、 barman replication-status コマンドは、同期ストリーミングクライアントとしてreceive-walプロセスを表示するはずです。
barman replication-status pg
出力
Status of streaming clients for server 'pg':
Current xlog location on master: 0/9000098
Number of streaming clients: 1
1. #1 Sync WAL streamer
Application name: barman_receive_wal
Sync stage : 3/3 Remote write
Communication : TCP/IP
IP Address : 139.59.135.32 / Port: 58262 / Host: -
User name : streaming_barman
Current state : streaming (sync)
Replication slot: barman
WAL sender PID : 2501
Started at : 2016-09-16 10:33:01.725883+00:00
Sent location : 0/9000098 (diff: 0 B)
Write location : 0/9000098 (diff: 0 B)
Flush location : 0/9000098 (diff: 0 B)