pg_recvlogical — PostgreSQLのストリームの論理デコードを制御する
pg_recvlogical
[option
...]
pg_recvlogical
はレプリケーションスロットの論理デコードを制御し、またレプリケーションスロットからデータを流します。
これはレプリケーションモードの接続をするため、pg_receivewalと同じ制約に加えて、論理レプリケーション(第49章を参照)と同じ制約も受けます。
pg_recvlogical
には、論理デコードのSQLインタフェースのpeekとgetのモードに対応するものがありません。
データを受信する度、および終了時にダラダラとその再生確認を送信します。
スロット上の未処理のデータを処理せずに検査するには、pg_logical_slot_peek_changes
を使用してください。
動作を選択するため、以下のオプションのうち少なくとも1つを指定しなければなりません。
--create-slot
新しい論理レプリケーションスロットを--slot
で指定した名前で、--plugin
の出力プラグインを使い、--dbname
で指定したデータベースに対して作成します。
--drop-slot
--slot
で指定された名前のレプリケーションスロットを削除して、終了します。
--start
--slot
で指定した論理レプリケーションスロットからストリームの変更を開始し、シグナルを受けて終了するまで継続します。
サーバ側の変更ストリームがサーバのシャットダウンまたは接続断によって終了した場合は、--no-loop
が指定されていなければ、ループ内でリトライします。
ストリームのフォーマットは、スロットが作成された時に指定された出力プラグインによって決定されます。
接続はスロットの作成時に使用したのと同じデータベースに対してでなければなりません。
--create-slot
と--start
は同時に指定することができます。
--drop-slot
は他の動作と組み合わせることができません。
以下のコマンド行オプションは出力の場所とフォーマット、およびその他のレプリケーションの動作を制御します。
-E lsn
--endpos=lsn
--start
モードでは、自動的にレプリケーションを停止し、受信が指定のLSNに到達したら正常な終了ステータス0で終了します。
--start
以外のモードの時に指定された場合は、エラーが発生します。
LSNがlsn
と正確に一致するレコードがある場合、そのレコードは出力されます。
--endpos
オプションはトランザクションの境界を意識しないため、トランザクションの途中で出力を切り捨てるかもしれません。
部分的に出力されたトランザクションはいずれも処理されず、スロットが次回、読み込まれた時に再び再生されます。
個々のメッセージが切り捨てられることはありません。
-f filename
--file=filename
受け取り、デコードしたトランザクションデータをこのファイルに書き込みます。
stdoutに出力するには-
を使います。
-F interval_seconds
--fsync-interval=interval_seconds
出力ファイルがディスクに安全にフラッシュされることを確実にするため、pg_recvlogicalがfsync()
の呼び出しを実行する頻度を指定します。
サーバはクライアントに対して、フラッシュを実行し、またフラッシュ位置をサーバに報告するように、ときどき要求します。 この設定はそれに加えて、フラッシュをより高頻度で実行するものです。
0
という間隔を指定すると、fsync()
の呼び出しをまったく実行しなくなりますが、それでも状況をサーバに報告はします。
この場合、クラッシュするとデータが失われるかもしれません。
-I lsn
--startpos=lsn
--start
モードでは、レプリケーションを指定のLSNから開始します。
この効果の詳細については第49章および53.4を参照してください。
その他のモードでは無視されます。
--if-not-exists
--create-slot
が指定され、指定された名前のスロットが既に存在している場合に、エラーを発生させません。
-n
--no-loop
サーバへの接続が失われたとき、ループ内でリトライせず、単に終了します。
-o name
[=value
]
--option=name
[=value
]
オプションname
と(指定されていれば)オプション値value
を出力プラグインに渡します。
存在するオプションとその効果は、利用する出力プラグインに依存します。
-P plugin
--plugin=plugin
スロットを作成するとき、指定された論理デコードの出力プラグインを使います。 第49章を参照してください。 このオプションは、スロットが既に存在する時は、何の効果もありません。
-s interval_seconds
--status-interval=interval_seconds
このオプションはpg_receivewalの同じ名前のオプションと同じ効果があります。 そちらの説明を参照してください。
-S slot_name
--slot=slot_name
--start
モードでは、slot_name
という名前の既存の論理レプリケーションスロットを使います。
--create-slot
では、この名前のスロットを作成します。
--drop-slot
モードでは、この名前のスロットを削除します。
-v
--verbose
冗長モードを有効にします。
以下のコマンド行オプションはデータベース接続パラメータを制御します。
-d dbname
--dbname=dbname
接続するデータベースです。
この意味の詳細は動作の説明を参照してください。
dbname
は接続文字列でも構いません。
その場合、接続文字列パラメータは衝突するコマンドラインオプションよりも優先します。
デフォルトはユーザ名です。
-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でサポートされる環境変数を使用します。 (34.15を参照してください)。
環境変数PG_COLOR
は診断メッセージで色を使うかどうかを指定します。
可能な値はalways
、auto
、never
です。
pg_recvlogicalは、ソースクラスタでグループパーミッションが有効である場合、受け取ったWALファイルのグループパーミッションを維持します。
例については49.1を参照してください。