★PostgreSQLカンファレンス2024 12月6日開催/チケット販売中★
他のバージョンの文書 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_recvlogicalPostgreSQLのストリームの論理デコードを制御する

概要

pg_recvlogical [option...]

説明

pg_recvlogicalはレプリケーションスロットの論理デコードを制御し、またレプリケーションスロットからデータを流します。

これはレプリケーションモードの接続をするため、pg_receivexlogと同じ制約に加えて、論理レプリケーション(46章ロジカルデコーディングを参照)と同じ制約も受けます。

オプション

動作を選択するため、以下のオプションのうち少なくとも1つを指定しなければなりません。

--create-slot

新しい論理レプリケーションスロットを--slotで指定した名前で、--pluginの出力プラグインを使い、--dbnameで指定したデータベースに対して作成します。

--drop-slot

--slotで指定された名前のレプリケーションスロットを削除して、終了します。

--start

--slotで指定した論理レプリケーションスロットからストリームの変更を開始し、シグナルを受けて終了するまで継続します。 サーバ側の変更ストリームがサーバのシャットダウンまたは接続断によって終了した場合は、--no-loopが指定されていなければ、ループ内でリトライします。

ストリームのフォーマットは、スロットが作成された時に指定された出力プラグインによって決定されます。

接続はスロットの作成時に使用したのと同じデータベースに対してでなければなりません。

--create-slot--startは同時に指定することができます。 --drop-slotは他の動作と組み合わせることができません。

以下のコマンド行オプションは出力の場所とフォーマット、およびその他のレプリケーションの動作を制御します。

-f filename
--file=filename

受け取り、デコードしたトランザクションデータをこのファイルに書き込みます。 stdoutに出力するには-を使います。

-F interval_seconds
--fsync-interval=interval_seconds

出力ファイルがディスクに安全にフラッシュされることを確実にするため、pg_recvlogicalfsync()の呼び出しを実行する頻度を指定します。

サーバはクライアントに対して、フラッシュを実行し、またフラッシュ位置をサーバに報告するように、ときどき要求します。 この設定はそれに加えて、フラッシュをより高頻度で実行するものです。

0という間隔を指定すると、fsync()の呼び出しをまったく実行しなくなりますが、それでも状況をサーバに報告はします。 この場合、クラッシュするとデータが失われるかもしれません。

-I lsn
--startpos=lsn

--startモードでは、レプリケーションを指定のLSNから開始します。 この効果の詳細については46章ロジカルデコーディングおよび50.3. ストリーミングレプリケーションプロトコルを参照してください。 その他のモードでは無視されます。

--if-not-exists

--create-slotが指定され、指定された名前のスロットが既に存在している場合に、エラーを発生させません。

-n
--no-loop

サーバへの接続が失われたとき、ループ内でリトライせず、単に終了します。

-o name[=value]
--option=name[=value]

オプションnameと(指定されていれば)オプション値valueを出力プラグインに渡します。 存在するオプションとその効果は、利用する出力プラグインに依存します。

-P plugin
--plugin=plugin

スロットを作成するとき、指定された論理デコードの出力プラグインを使います。 46章ロジカルデコーディングを参照してください。 このオプションは、スロットが既に存在する時は、何の効果もありません。

-s interval_seconds
--status-interval=interval_seconds

このオプションはpg_receivexlogの同じ名前のオプションと同じ効果があります。 そちらの説明を参照してください。

-S slot_name
--slot=slot_name

--startモードでは、slot_nameという名前の既存の論理レプリケーションスロットを使います。 --create-slotでは、この名前のスロットを作成します。 --drop-slotモードでは、この名前のスロットを削除します。

-v
--verbose

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

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

-d database
--dbname=database

接続するデータベースです。 この意味の詳細は動作の説明を参照してください。 libpqの接続文字列とすることもできます。 詳細は31.1.1. 接続文字列を参照してください。 デフォルトはユーザ名です。

-h hostname-or-ip
--host=hostname-or-ip

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

-p port
--port=port

サーバが接続を監視しているTCPポート番号またはローカルのUnixドメインソケットのファイル拡張子を指定します。 デフォルトは環境変数PGPORTが設定されていればそれを使用し、そうでなければコンパイル時に設定されたデフォルト値です。

-U user
--username=user

接続で使用するユーザ名です。 デフォルトは現在のOSのユーザ名です。

-w
--no-password

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

-W
--password

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

サーバがパスワード認証を要求する場合、pg_recvlogicalは自動的にパスワード入力を促しますから、このオプションは本質的ではありません。 しかし、サーバがパスワードを必要とすることを確認するためにpg_recvlogicalが無駄な接続試行を行うことになります。 無駄な接続試行を避けるために-Wを指定するのが有効になる場合もあるでしょう。

この他に、以下のオプションが利用できます。

-V
--version

pg_recvlogicalのバージョンを出力して、終了します。

-?
--help

pg_recvlogicalのコマンド行引数に関するヘルプを表示して、終了します。

環境

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

例については46.1. ロジカルデコーディングの例を参照してください。

関連項目

pg_receivexlog