26.1. アーカイブリカバリの設定

restore_command (string)

連続したWALファイルのアーカイブを取得するために実行するシェルコマンドを指定します。 このパラメータやアーカイブリカバリには必須ですが、ストリーミングレプリケーションの場合には必須ではありません。 指定した文字列の中の %f はアーカイブから取得するファイル名に置換され、%p はコピー先のディレクトリ名に置換されます。 (パス名はカレントワーキングディレクトリに対する相対パスとなります。i.e., クラスタのデータディレクトリ) %r は、有効な最後のリスタートポイントを含むWALファイルのファイル名に置換されます。 これはリスタートを可能にするためのリストア時に必要とされる、保持されているべきもっとも古いファイルとなります。 よってこの情報は、現在のリストアからリスタートするために必要となるように、アーカイブを最小化するために利用することができます。 %r は通常はウォームスタンバイの設定でのみ使用されます (項25.2を参照) 。 % 文字を埋め込むためには、%% と記述してください。

コマンドは、成功した時のみ終了コードのゼロを返却することが重要です。 このコマンドは、アーカイブに存在しないファイル名を求めることがあります。 その場合には、非ゼロの値を返却しなければなりません。以下に例を示します。

restore_command = 'cp /mnt/server/archivedir/%f "%p"'
restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"'  # Windows

archive_cleanup_command (string)

このオプションのパラメータは、すべてのリスタートポイントで実行されるシェルコマンドを指定します。 archive_cleanup_command の目的は、スタンバイサーバにとって必要とされない古いアーカイブWALファイルをクリーンアップする仕組みを提供することです。 %r は、最後の有効なリスタートポイントを含んでいるWALファイルのファイル名に置換されます。 これはリスタートを可能にするためのリストア時に必要とされる、保持されているべきもっとも古いファイルとなり、これによって%rより前のすべてのファイルは安全に削除されます。 この情報は、現在のリストアからリスタートするために必要となるように、アーカイブを最小化するために利用することができます。 pg_archivecleanupモジュールは、単独のスタンバイ構成でarchive_cleanup_commandによく使用されます。 例:

archive_cleanup_command = 'pg_archivecleanup /mnt/server/archivedir %r'

但し、複数のスタンバイサーバが同一のアーカイブディレクトリからリストアしている場合には、どのサーバからも必要とされなくなるまで削除しないことを担保しなければなりません。 通常、archive_cleanup_command はウォームスタンバイの設定でのみ使用されます (項25.2を参照) 。 % 文字を埋め込むためには、%% と記述してください。

コマンドが非ゼロの終了ステータスを返した場合、WARNINGログメッセージが出力されます。

recovery_end_command (string)

このパラメータは、リカバリの終了時に一度だけ実行されるシェルコマンドを指定します。 このパラメータは必須ではありません。 recovery_end_command の目的は、レプリケーションやリカバリ実行後のクリーンアップのメカニズムを提供することです。 %r は、archive_cleanup_command と同様に、有効な最後のリスタートポイントを含むWALファイルのファイル名に置換されます。

コマンドが非ゼロの終了ステータスを返した場合、WARNINGログメッセージが出力されるとともに、それに関わらずデータベースはスタートアップを進行させます。 唯一の例外は、コマンドがシグナルによって終了させられた場合で、その場合、データベースはスタートアップを進行させません。