vb_recvlogical
功能介绍
vb_recvlogical工具通过连接指定的节点,创建或删除逻辑复制槽,并且持续、实时的从该节点获取逻辑解码中间结果,输出到文件或标准输出。
注意事项
使用逻辑解码之前,必须设置wal_level为 logical,并且max_replication_slots必须至少被设置为 1。
语法格式
vb_recvlogical [OPTION]...
参数说明
逻辑复制槽行为参数(必选参数)
--create
创建一个新的逻辑复制槽。 内部调用了pg_create_logical_replication_slot函数,调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限,且此函数目前只支持在主机调用。
--start
启动该逻辑复制槽的流复制。
--drop
删除一个逻辑复制槽。
通用参数
-f, --file=FILE
设置输出到指定文件。
-n, --no-loop
指定此参数,连接失败后不重试。
-v, --verbose
输出详细信息。
-V, --version
打印版本信息然后退出。
-?, --help
打印帮助信息。
连接参数
-d, --dbname=DBNAME
连接的目标数据库名。
-h, --host=HOSTNAME
指定运行服务器的主机名,如果数值以斜杠开头则被用作到Unix域套接字的路径。
-p, --port=PORT
指定主机端口号。
-s, --status-interval=INTERVAL
发送的心跳包间隔时间。这允许对服务器进程的更简单的监视。为了避免连接超时,零值完全禁用定期状态更新,尽管服务器需要时仍然发送一个更新。缺省值是10秒。
-U, --username=USERNAME
指定所连接主机的用户名。
-w, --no-password
不出现输入密码提示。如果主机要求密码认证并且密码没有通过其它形式给出,则连接尝试将会失败。
-W, --password
指定用户连接的密码。
复制参数
-F --fsync-interval=INTERVAL
同步到目标输出文件的间隔时间。单位为秒,默认值10。
-o, --option=NAME[=VALUE]
指定向逻辑复制槽的输出插件添加参数。参数的取值为:include-xids、skip-empty-xacts、include-timestamp、only-local、force-binary、white-table-list、standby-connection、parallel-decode-num、decode-style、sending-batch、max-txn-in-memory、max-reorderbuffer-in-memory。
取值请参考逻辑复制函数->pg_logical_slot_peek_changes。
-P, --plugin=PLUGIN
指定使用的逻辑复制槽输出插件。
-s, --status-interval=INTERVAL
发送的心跳包间隔时间。单位为秒,默认值10。
-S, --slot=SLOT
指定逻辑复制槽的名称。
-I, --startpos=PTR
当使用已有逻辑复制槽时,指定初始复制的LSN位置。
-r, --raw
在并行解码场景下,设置此参数表示不会将二进制格式或是批量发送的结果转化为文本格式,该参数仅供测试人员测量并行解码性能时使用。设置该参数后,二进制格式或批量发送的解码结果将为不可读的格式。
使用举例
1、搭建一主一备集群环境。
2、设置如下GUC参数。
wal_level = logical
max_replication_slots = 28
ssl = on
3、创建逻辑复制槽。
vb_recvlogical -d vastbase -S test_slot -p 5432 --create
4、开启流式解码,结果输出到stdout。
vb_recvlogical -d vastbase -S test_slot -p 5432 -o include-xids=false -o skip-empty-xacts=true -o parallel-decode-num=20 -o decode-style=j --start -v -f -
5、删除逻辑复制槽。
vb_recvlogical -d vastbase -S test_slot --drop