Postgresql 中文操作指南
Description
pg_recvlogical 控制逻辑解码复制槽,并从这些复制槽流式传输数据。
它创建一个复制模式连接,因此它受到与 pg_receivewal 相同的约束,加上逻辑复制的约束(请参阅 Chapter 49 )。
pg_recvlogical 没有逻辑解码 SQL 接口的 peek 和 get 模式的等效项。它在接收到数据时懒惰发送数据重播确认,并在退出干净时发送数据重播确认。若要在槽上检查待处理数据而无需使用它,请使用 pg_logical_slot_peek_changes 。
在没有致命错误的情况下,pg_recvlogical 将运行,直至被 SIGINT ( Control + C ) 或 SIGTERM 信号终止。
Options
必须至少指定以下一个选项才能选择一个动作:
-
—create-slot
-
使用 —​plugin 指定的输出插件,为 —​dbname 指定的数据库创建一个新逻辑复制槽,其中 —​slot 指定了该槽的名称。
-
可以使用 —​two-phase 和 —​create-slot 启用已准备事务的解码。
-
-
—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 中开始复制。有关此效果的详细信息,请参阅 Chapter 49 和 Section 55.4 中的文档。在其他模式中被忽略。
-
-
—if-not-exists
-
在指定了 —​create-slot 并且具有指定名称的槽已经存在的情况下,不产生错误。
-
-
-n_—no-loop_
-
当与服务器的连接丢失时,不要无限次重试,只需退出。
-
-
-o _name[role="=value"]—option=_name[=value_]_
-
将选项 name 传递给输出插件,如果指定,则为选项值 value 。存在哪些选项及其效果取决于所使用的输出插件。
-
-
-P _plugin—plugin=_plugin
-
在创建插槽时,使用指定的逻辑解码输出插件。请参阅 Chapter 49 。如果该槽已经存在,则此选项没有效果。
-
-
-s _interval_seconds—status-interval=_interval_seconds
-
此选项与 pg_receivewal 中的同名选项的效果相同。请参阅那里的描述。
-
-
-S _slot_name—slot=_slot_name
-
在 —​start 模式中,使用名为 slot_name 的现有逻辑复制槽。在 —​create-slot 模式中,使用此名称创建该槽。在 —​drop-slot 模式中,使用此名称删除该槽。
-
-
-t_—two-phase_
-
启用准备好的事务解码。此选项只能与 —​create-slot 一起指定。
-
-
-v_—verbose_
-
Enables verbose mode.
-
以下命令行选项控制数据库连接参数。
-
-d _dbname—dbname=_dbname
-
要连接的数据库。有关此选项在具体意义上的详细说明,请参阅操作描述。 dbname 可以是 connection string 。如果是这样,则连接字符串参数将覆盖所有有冲突的命令行选项。默认为用户名。
-
-
-h _hostname-or-ip—host=_hostname-or-ip
-
指定服务器运行所在机器的主机名。如果该值以斜线开头,则将其用作 Unix 域套接字的目录。如果没有设置,则默认从 PGHOST 环境变量中获取,否则尝试建立 Unix 域套接字连接。
-
-
-p _port—port=_port
-
指定服务器侦听连接的 TCP 端口或本地 Unix 域套接字文件扩展名。如果没有设置,则默认为 PGPORT 环境变量,或编译时默认值。
-
-
-U _user—username=_user
-
以该用户身份连接。默认为当前操作系统用户名。
-
-
-w_—no-password_
-
永不发出密码提示。如果服务器需要密码验证但其他方法(如 .pgpass 文件)无法提供密码,连接尝试将失败。此选项可在无人执行密码输入的批处理作业和脚本中使用。
-
-
-W_—password_
-
强制 pg_recvlogical 在连接到数据库之前提示输入密码。
-
此选项永远不会是必需的,因为如果服务器要求密码身份验证,则 pg_recvlogical 会自动提示输入密码。然而,pg_recvlogical 会尝试浪费一次连接来找出服务器是否需要密码。在某些情况下,输入 -W 以避免额外的连接尝试是值得的。
-
以下其他选项可用:
-
-V_—version_
-
打印 pg_recvlogical 版本并退出。
-
-
-?_—help_
-
显示有关 pg_recvlogical 命令行参数的帮助,然后退出。
-
Exit Status
当 pg_recvlogical 被 SIGINT 或 SIGTERM 信号终止时,它将退出,状态码为 0。(这是结束它的正常方式。因此它不是错误。)对于致命错误或其他信号,退出状态将为非零。
Environment
此实用工具与大多数其他 PostgreSQL 实用工具类似,它使用 libpq 所支持的环境变量(请参阅 Section 34.15 )。
环境变量 PG_COLOR 指定是否在诊断消息中使用颜色。可能的值是 always 、 auto 和 never 。
Examples
有关示例,请参阅 Section 49.1 。