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。