他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

pg_receivexlog

名前

pg_receivexlog -- PostgreSQLサーバからトランザクションログをストリームする

概要

pg_receivexlog [option...]

説明

pg_receivexlogは実行中のPostgreSQLクラスタからトランザクションログをストリームするために使用されます。 トランザクションログはストリーミングレプリケーションプロトコルを使用してストリームされ、ローカルディレクトリのファイルとして書き出されます。 このディレクトリはポイントインタイムリカバリ(項24.3参照)を用いてリストアする際のアーカイブ場所として使用することができます。

pg_receivexlogはトランザクションログをサーバで生成に合わせてリアルタイムでストリームし、archive_commandのようにセグメントが完了するまで待機することはありません。 このため、pg_receivexlogを使用する場合にはarchive_timeoutを設定する必要はありません。

トランザクションログは通常のPostgreSQL接続を経由して、そしてレプリケーションプロトコルを使用して、ストリームされます。 この接続はスーパーユーザまたはREPLICATION権限(項20.2参照)を持つユーザで確立されなければなりません。 そしてpg_hba.confで明示的にレプリケーション用の接続を許可しなければなりません。 またサーバではストリーム用に利用できるセッションが少なくとも1つ存在できるためにmax_wal_sendersを十分大きく設定しなければなりません。

接続が失われた場合、または、致命的ではないエラーで初期確立ができなかった場合、pg_receivexlogは無期限に接続を再試行しできるだけ早くストリーミングを再確立します。 この動作を止めるためには-nパラメータを使用してください。

オプション

-D directory
--directory=directory

出力を書き出すディレクトリです。

このパラメータは必須です。

-n
--no-loop

接続エラー時に繰り返しません。 代わりにエラーですぐに終了します。

-s interval
--status-interval=interval

サーバに状態パケットを返答する間隔を秒単位で指定します。 これによりサーバからより簡単に進行状況を監視することができます。 ゼロという値は状態の定期的な更新を完全に無効にします。 しかしタイムアウトによる切断を防ぐために、サーバから要求された時には更新を送信します。 デフォルト値は10秒です。

-S slotname
--slot=slotname

pg_receivexlogが既存のレプリケーションスロットを使うようにします(項25.2.6を参照してください)。 このオプションが使われると、pg_receivexlogはフラッシュ位置をサーバに報告します。 これは、各セグメントがいつディスクに同期されたかを示し、それによりサーバが必要のなくなったセグメントを削除できるようになります。 このパラメータを使うとき、synchronous_standby_namesの不注意な設定により、pg_receivexlogが同期スタンバイになることがないようにすることが重要です。 それが正しく動作するほど頻繁にはデータをフラッシュしないからです。

-v
--verbose

冗長モードを有効にします。

以下のコマンドラインオプションはデータベース接続パラメータを制御します。

-d connstr
--dbname=connstr

サーバに接続するために使用するパラメータを、接続文字列として指定します。 詳細については項31.1.1を参照してください。

このオプションは他のクライアントアプリケーションとの整合性のために--dbnameと呼ばれます。 しかし、pg_receivexlogはクラスタ内のどの特定のデータベースにも接続しませんので、接続文字列内のデータベース名は無視されます。

-h host
--host=host

サーバが稼働しているマシンのホスト名を指定します。 名前がスラッシュから始まる場合、Unixドメインソケット用のディレクトリとして使用されます。 デフォルトは環境変数PGHOSTが設定されていればその値から取られ、設定されていない場合はUnixドメインソケット接続が試行されます。

-p port
--port=port

サーバが接続を待ち受けるTCPポートまたはUnixドメインソケットファイルの拡張子を指定します デフォルトは環境変数PGPORTが指定されていればその値から取られ、設定されていない場合はコンパイル時のデフォルト値から取られます。

-U username
--username=username

接続するユーザ名です。

-w
--no-password

パスワード入力を促しません。 サーバがパスワード認証を必要とし、かつ、.pgpassファイルなど他の手段でパスワードが入手できない場合、接続試行は失敗します。 このオプションは、パスワードを入力するユーザが存在しないバッチジョブやスクリプトで有用になります。

-W
--password

pg_receivexlogはデータベースに接続する前にパスワード入力を強制的に促します。

このオプションは重要ではありません。 pg_receivexlogは、サーバがパスワード認証を要求した場合に自動的にパスワードを促すためです。 しかしpg_receivexlogは、サーバがパスワードを要求するかどうかを確認するために接続試行を浪費します。 -Wと入力して無駄な接続試行を防止することが有意である場合があります。

この他に以下のオプションも使用することができます。

-V
--version

pg_receivexlogのバージョンを表示し、終了します。

-?
--help

pg_receivexlogコマンドライン引数についてのヘルプを表示し、終了します。

環境

他のほとんどのPostgreSQLユーティリティと同様、このユーティリティはlibpqでサポートされる環境変数(項31.14参照)を使用します。

注釈

archive_commandの代わりにpg_receivexlogをWALのバックアップのメインの方法として使用する場合、レプリケーションスロットを使用することを強く推奨します。 そうしなければ、サーバはarchive_commandとレプリケーションスロットのいずれからもWALのストリームがどこまでアーカイブされているかの情報を得られないため、トランザクションログファイルがバックアップされる前にそれを再利用または削除するかもしれないのです。 しかし、WALデータを受け取る側がそのフェッチに追いつけない場合、レプリケーションスロットがサーバのディスクスペースを一杯にしてしまうかもしれないことに注意してください。

トランザクションログをmydbserverにあるサーバからストリームし、それをローカルディレクトリ/usr/local/pgsql/archiveに格納します。

$ pg_receivexlog -h mydbserver -D /usr/local/pgsql/archive

関連項目

pg_basebackup