1.15.?ux_recvlogical

1.15.1. 用法
1.15.2. 描述
1.15.3. 选项
1.15.4. 环境变量
1.15.5. 示例

ux_recvlogical — 控制UXDB逻辑解码流

1.15.1.?用法

ux_recvlogical [option...]

1.15.2.?描述

ux_recvlogical控制逻辑解码复制槽以及来自这种复制槽的流数据。

它会创建一个复制模式的连接,因此它受到和ux_receivewal相同的约束,还有逻辑复制的约束。

ux_recvlogical不同于逻辑解码SQL接口的监控和获取模式。它会在收到数据并退出时延迟地发送重播确认。检查插槽上未处理的数据而不使用它,使用ux_logical_slot_peek_changes

1.15.3.?选项

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

--create-slot

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

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

指定ux_recvlogical发出 fsync()调用确保输出文件被安全地刷到磁盘的频度。

服务器将会间隔设置时间要求客户端执行一次刷写并且把刷写位置报告给服务器。这个设置可以在此之外更加频繁地执行刷写。

指定间隔为0会完全禁止发出fsync() 调用,但是仍会报告进度给服务器。在这种情况下,发生崩溃会导致数据丢失。

-I lsn
--startpos=lsn

--start模式中,从给定的LSN开始复制。在其他模式中会忽略这个参数。

--if-not-exists

当指定--create-slot并且具有指定名称 的槽已经存在时不要抛出错误。

-n
--no-loop

当服务器连接丢失时,不要在循环中重试,直接退出。

-o name[=value]
--option=name[=value]

如果指定了输出插件,把选项值value 传递给选项name。存在哪些选项以及它们的效果 取决于使用的输出插件。

-P plugin
--plugin=plugin

在创建一个槽时使用指定的逻辑解码输出插件。如果该槽已经存在,这个选项没有效果。

-s interval_seconds
--status-interval=interval_seconds

这个选项和ux_receivewal中的同名选项效果相同。

-S slot_name
--slot=slot_name

--start模式中,使用名为slot_name 的已有逻辑复制槽。在--create-slot模式中,使用这个名称 创建该槽。在--drop-slot模式中,删除这个名称指定的槽。

-v
--verbose

开启详细输出模式。

下列命令行选项控制数据库连接参数。

-d database
--dbname=database

要连接的数据库。它可以是一个libpq连接字符串。默认为用户名。

-h hostname-or-ip
--host=hostname-or-ip

指定服务器正在运行的机器的主机名。如果该值开始于一个斜线, 它被用作一个 Unix 域套接字的目录。默认是从 UXHOST环境变量中取得(如果被设置), 否则将尝试一次 Unix 域套接字连接。

-p port
--port=port

指定服务器正在监听连接的 TCP 端口或本地 Unix 域套接字文件扩展名。 默认是放在UXPORT环境变量中(如果被设置), 否则使用编译在程序中的默认值。

-U user
--username=user

要作为哪个用户连接。默认是用当前操作系统用户名。

-w
--no-password

从不发出一个口令提示。如果服务器要求口令认证并且没有 其他方式提供口令(例如一个.uxpass文件), 那么连接尝试将失败。这个选项对于批处理任务和脚本有用, 因为在其中没有一个用户来输入口令。

-W
--password

强制ux_dump在连接到一个数据库之前提示要求一个口令。

这个选项不是必须的,因为如果服务器要求口令认证, ux_dump将自动提示要求一个口令。 但是,ux_dump将浪费一次连接尝试 来发现服务器想要一个口令。在某些情况下,值得键入 -W来避免额外的连接尝试。

还有下列附加选项可用:

-V
--version

打印ux_recvlogical的版本并且退出。

-?
--help

显示关于ux_recvlogical命令行参数的帮助,并且退出。

1.15.4.?环境变量

和大部分其他UXDB工具相似,这个工具也使用libpq支持的环境变量。

1.15.5.?示例

$ ux_recvlogical -dUXDB--slot test --start -f -
Control+Z
$ uxsql -dUXDB-c "INSERT INTO data(data) VALUES('4');"
$fg
BEGIN 693
table public.data: INSERT: id[integer]:4 data[text]:'4'
COMMIT 693
Control+C
$ ux_recvlogical -dUXDB--slot test --drop-slot
XML 地图 | Sitemap 地图