WALアーカイブ#
Barmanは、WALアーカイブに関する追加機能も提供します。
WAL圧縮#
Barmanは、BarmanのWALアーカイブに入るときにWALファイルを圧縮できます。このプロセスは、 barman cron によって自動的に処理されるか、 barman archive-wal コマンドが手動で実行されたときに処理されます。
圧縮は、構成ファイルの compression オプションを介して有効にされます。オプションでは、次のいずれかの値を使用できます。
lz4LZ4圧縮用lz4ライブラリをインストールする必要があります。xzXZ圧縮用Pythonの内部圧縮ライブラリを使用します。zstdZstandard圧縮用zstandardライブラリをインストールする必要があります。gzipGzip圧縮の場合gzipユーティリティが必要です。pygzipGzip圧縮用Pythonの内部圧縮ライブラリを使用します。pigzPigz圧縮用pigzユーティリティが必要です。bzip2Bzip2圧縮の場合bzip2ユーティリティが必要です。pybzip2Bzip2圧縮用Pythonの内部圧縮ライブラリを使用します。customカスタム圧縮用。同様に次のオプションを設定する必要がありますcustom_compression_filter、custom_decompression_filter、custom_compression_magic。詳細については、customを確認してください。
注釈
bzip2 、 gzip 、 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)