选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4
历史版本PostgreSQL 9.5 已于 2021 年 2 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本

pg_recvlogical

pg_recvlogical — 控制 PostgreSQL 逻辑解码流

大纲

pg_recvlogical [option...]

描述

pg_recvlogical用于控制逻辑解码复制槽,并从这类复制槽流式传输数据。

它会创建复制模式连接,因此除受到与pg_receivexlog 相同的约束外,还要满足逻辑复制的相关约束(见第 46 章)。

选项

必须至少指定以下选项之一来选择操作:

--create-slot

为由--dbname指定的数据库,使用--plugin指定的输出插件, 创建一个名称由--slot指定的新逻辑复制槽。

--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_recvlogical应当以多高的频率发起fsync()调用, 以确保输出文件安全刷盘。

服务器会偶尔要求客户端执行刷盘,并将刷盘位置报告给服务器。 除此之外,此设置还会更频繁地执行刷盘。

将间隔指定为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 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

用于连接的用户名。默认为当前操作系统用户名。

-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 节

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。