WALアーカイブ#

Barmanは、WALアーカイブに関する追加機能も提供します。

WAL圧縮#

Barmanは、BarmanのWALアーカイブに入るときにWALファイルを圧縮できます。このプロセスは、 barman cron によって自動的に処理されるか、 barman archive-wal コマンドが手動で実行されたときに処理されます。

圧縮は、構成ファイルの compression オプションを介して有効にされます。オプションでは、次のいずれかの値を使用できます。

  • lz4 LZ4圧縮用 lz4 ライブラリをインストールする必要があります。

  • xz XZ圧縮用Pythonの内部圧縮ライブラリを使用します。

  • zstd Zstandard圧縮用 zstandard ライブラリをインストールする必要があります。

  • gzip Gzip圧縮の場合 gzip ユーティリティが必要です。

  • pygzip Gzip圧縮用Pythonの内部圧縮ライブラリを使用します。

  • pigz Pigz圧縮用 pigz ユーティリティが必要です。

  • bzip2 Bzip2圧縮の場合 bzip2 ユーティリティが必要です。

  • pybzip2 Bzip2圧縮用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)