On this page
pg_recvlogical
pg_recvologic —控制 PostgreSQL 逻辑解码流
Synopsis
pg_recvlogical [ option ...]
Description
pg_recvlogical控制逻辑解码复制插槽,并从这些复制插槽流式传输数据。
它创建了一个复制模式连接,因此它受到与pg_receivewal相同的约束以及逻辑复制的约束(请参阅Chapter 48)。
pg_recvlogical不具有等效于逻辑解码 SQL 接口的 peek 和 get 模式。它在接收到数据时以及在干净退出时会延迟发送数据的重播确认。要在不占用插槽的情况下检查未决数据,请使用pg_logical_slot_peek_changes。
Options
必须至少指定以下选项之一才能选择操作:
--create-slot- 使用
--plugin指定的输出插件,为--dbname指定的数据库创建一个名称为--slot指定的新逻辑复制插槽。
- 使用
--drop-slot- 删除名称为
--slot的复制插槽,然后退出。
- 删除名称为
--start- 从
--slot指定的逻辑复制槽开始流式传输更改,一直持续到 signal 终止为止。如果服务器端更改流以服务器关闭或断开连接结束,则除非指定--no-loop,否则请循环尝试。
- 从
流格式由创建插槽时指定的输出插件确定。
连接必须与用于创建插槽的数据库相同。
可以一起指定--create-slot和--start。 --drop-slot不能与其他动作组合使用。
以下命令行选项控制输出和其他复制行为的位置和格式:
-E lsn--endpos=lsn- 在
--start模式下,当接收到达指定的 LSN 时,将自动停止复制并以正常退出状态 0 退出。如果在不在--start模式下指定时,将引发错误。
- 在
如果存在 LSN 等于* lsn *的记录,则将输出该记录。
--endpos选项不了解事务边界,可能会在事务过程中截断输出。下次读取该插槽时,将不使用任何部分输出的事务,并且将再次重播该事务。单个消息永远不会被截断。
-f filename--file=filename- 将接收和解码的事务数据写入此文件。将
-用于标准输出。
- 将接收和解码的事务数据写入此文件。将
-F interval_seconds--fsync-interval=interval_seconds- 指定 pg_recvologic 应该多久发出一次
fsync()调用,以确保将输出文件安全地刷新到磁盘。
- 指定 pg_recvologic 应该多久发出一次
服务器有时会请求 Client 端执行刷新操作,并将刷新位置报告给服务器。除此之外,此设置还可以更频繁地执行刷新。
指定间隔0将完全禁用发出fsync()调用,同时仍向服务器报告进度。在这种情况下,如果发生崩溃,数据可能会丢失。
-I lsn--startpos=lsn- 在
--start模式下,从给定的 LSN 开始复制。有关此效果的详细信息,请参见Chapter 48和Section 52.4中的文档。在其他模式下被忽略。
- 在
--if-not-exists- 指定
--create-slot并且具有指定名称的插槽已存在时,请不要出错。
- 指定
-n--no-loop- 与服务器的连接丢失时,请勿循环尝试,而只需退出即可。
-o name[=value]--option=name[=value]- 将选项*
name和选项值value*传递给输出插件。存在哪些选项及其效果取决于所使用的输出插件。
- 将选项*
-P plugin--plugin=plugin- 创建插槽时,请使用指定的逻辑解码输出插件。参见Chapter 48。如果插槽已存在,则此选项无效。
-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 database--dbname=database- 要连接的数据库。有关详细含义,请参见操作说明。这可以是一个 libpq 连接字符串。有关更多信息,请参见Section 33.1.1。默认为用户名。
-h hostname-or-ip--host=hostname-or-ip- 指定运行服务器的计算机的主机名。如果该值以斜杠开头,则将其用作 Unix 域套接字的目录。默认值来自
PGHOST环境变量(如果已设置),否则尝试 Unix 域套接字连接。
- 指定运行服务器的计算机的主机名。如果该值以斜杠开头,则将其用作 Unix 域套接字的目录。默认值来自
-p port--port=port- 指定服务器正在侦听连接的 TCP 端口或本地 Unix 域套接字文件 extensions。默认值是
PGPORT环境变量(如果已设置)或已编译的默认值。
- 指定服务器正在侦听连接的 TCP 端口或本地 Unix 域套接字文件 extensions。默认值是
-U user--username=user- 连接的用户名。默认为当前 os 的用户名。
-w--no-password- 切勿发出密码提示。如果服务器要求密码验证,而其他方式(例如
.pgpass文件)无法使用密码,则连接尝试将失败。该选项在没有用户 Importing 密码的批处理作业和脚本中很有用。
- 切勿发出密码提示。如果服务器要求密码验证,而其他方式(例如
-W--password- 在连接数据库之前,强制 pg_recvologic 提示 Importing 密码。
这个选项从来都不是必须的,因为如果服务器要求密码认证,pg_recvologic 将自动提示 Importing 密码。但是,pg_recvologic 会浪费连接尝试,以发现服务器需要密码。在某些情况下,值得 Importing-W以避免额外的连接尝试。
可以使用以下附加选项:
-V--version- 打印 pg_recvologic 版本并退出。
-?--help- 显示有关 pg_recvologic 命令行参数的帮助,然后退出。
Environment
与大多数其他 PostgreSQLUtil 一样,该 Util 使用 libpq 支持的环境变量(请参见Section 33.14)。
Examples
有关示例,请参见Section 48.1。