WALストリーミング

Barmanは、標準のarchive_command戦略に加えて、ユーザーがPostgreSQLサーバーから連続的なWALストリーミングを追加できるようにすることで、Recovery Point Objective(RPO)を削減できます。

バーテンは依存している[pg_receivewal] [25]、ネイティブstreamingreplicationプロトコルを利用するPostgreSQLの9.2からbeenavailable有し、連続pg_receivewalがpg_receivexlog名前付けしたaPostgreSQLサーバー(マスタまたはスタンバイ)のPostgreSQL 10 .Priorからトランザクションログを受信するユーティリティ。

重要:> Barmanでは、pg_receivewalが同じサーバーにインストールされている必要があります。 PostgreSQL 9.2サーバーの場合、Barmanと一緒にpg_receivexlog of>バージョン9.2をインストールする必要があります。 PostgreSQL 9.3以降では、互換性があるため、pg_receivewalの最新バージョンをインストールすることをお勧めします。それ以外の場合、ユーザーはpg_receivewal / pg_receivexlogのマルチプルのバージョンをBarmanサーバーにインストールし、構成ファイルのpath_prefixオプションを使用して、サーバーの特定のバージョンを適切にポイントできます。

トランザクションログのストリーミングを有効にするオーダーには、以下を行う必要があります。

1.前述のようにストリーミング接続をセットアップします2。 streaming_archiverオプションをonに設定します

前述の要件が満たされている場合、cronコマンドは、receive-walコマンドの実行を通じてログストリーミングを透過的に管理しログ。これは推奨シナリオです。

ただし、ユーザーはreceive-walコマンドを手動で実行できます。

barman receive-wal <server_name>

注:> receive-walコマンドはフォアグラウンドプロセスです。

トランザクションログは、streaming_wals_directory構成オプションで指定されたディレクトリに直接ストリーミングされ、archive-walコマンドによってアーカイブされます。

streaming_archiver_nameパラメータで特に指定されていない限り、またPostgreSQL 9.3以降の場合のみ、BarmanはWALストリーマープロセスのapplication_nameをbarman_receive_walに設定し、 PostgreSQLサーバーのpg_stat_replicationシステムビューでそのステータスを監視できるようにします。

複製スロット

重要: PostgreSQL 9.4以降のレプリケーションスロットが利用可能

レプリケーションスロットは、PostgreSQLサーバーがallarchiversによって受信されるまでWALファイルを削除しないように保証自動化された方法です。 Barmanはこのメカニズムを使用して、 PostgreSQLからトランザクションログを受信します。

レプリケーションスロットの詳細については、[PostgreSQLマニュアル] [replication-slots]をご覧ください。

バックアップアーキテクチャをストリーミング接続のみに基づいて作成することもできます。このシナリオは、DockerベースのPostgreSQLサーバーを構成したり、 Windows上で実行されているPostgreSQLサーバーと連携したりする場合にも役立ちます。

重要:>現時点では、 Windowsサポートはまだ実験的であり、継続的な統合システムのパートではありません。

WALストリーミングを設定する方法

最初に、トランザクションログファイルをBarmanサーバーにストリームするようにPostgreSQLサーバーを構成する必要があります。

BarmanからPostgreSQLserverへのストリーミング接続を構成するには、サーバー構成ファイルの次の行を含めて、すでに述べたようにstreaming_archiverを有効にする必要があります。

streaming_archiver = on

レプリケーションスロットの使用を計画している場合(推奨)、ストリーミングベースのトランザクションログアーカイビングのセットアップに必要なもう1つのオプションは、slot_nameオプションです。

slot_name = barman

このオプションは、Barmanが使用するレプリケーションスロットの名前を定義します。レプリケーションスロットを使用する場合は必須です。

レプリケーションスロット>を設定する場合は、手動でこのコマンドを使用してバーマンためareplicationスロットを作成することができます。

barman@backup$ barman receive-wal --create-slot pg
Creating physical replication slot 'barman' on server 'pg'
Replication slot 'barman' created

Barman 2.10以降では、以下を設定することにより、Barmanがレプリケーションスロットを自動的に作成するように設定できます。

create_slot = auto

リカバリを伴う部分的なWALファイルの制限

pg_receivewalの標準的な動作は、WALセグメント名前の後に.partialサフィックスを持つファイルにトランザクション情報を書き込むことです。

バーマンは、サーバーのstreaming_wals_directoryにある部分ファイルを想定しています。完了すると、pg_receivewalは.partial接尾辞を削除し、次の接尾辞を開き、ファイルを永続的なストレージと圧縮のためにBarmanのarchive-walコマンドに配信します。

マスタPostgreSQLサーバーの突然の回復不能な障害の場合、Barmanにストリーミングされた.partialファイルには、標準アーカイバーが(PostgreSQLのarchive_commandを介して)Barmanに配信できなかったという非常に重要な情報が含まれています。

Barman 2.10の時点で、get-walコマンドは、--partial/-Pオプションを介して現在の.partial WALファイルのコンテンツを結果ことができます。これは、完全または特定の時点までのリカバリの場合に特に役立ちます。したがって、get-walを有効にして--standby-modeを使用せずにrecoverコマンドを実行する場合、Barmanは-Pオプションをrestore_commandリカバリオプションで自動的にbarman-wal-restoreに追加します(その後、リモートget-walコマンドにリレーします)。

get-walは、WALファイルが既にBarmanに出荷されているがまだアーカイブされていない場合、incomingディレクトリも検索します。