云数据库 GaussDB-逻辑解码选项:通用选项(串行解码和并行解码均可配置,但可能无效,请参考相关选项详细说明)

时间:2025-02-12 14:55:58

通用选项(串行解码和并行解码均可配置,但可能无效,请参考相关选项详细说明)

  • include-xids:

    解码出的data列是否包含xid信息。

    取值范围:bool型,默认值为true。

    • false:设为false时,解码出的data列不包含xid信息。
    • true:设为true时,解码出的data列包含xid信息。
  • skip-empty-xacts:

    解码时是否忽略空事务信息。

    取值范围:bool型,默认值为false。

    • false:设为false时,解码时不忽略空事务信息。
    • true:设为true时,解码时会忽略空事务信息。
  • include-timestamp:

    解码信息是否包含commit时间戳。

    取值范围:bool型,默认值为false。

    • false:设为false时,解码信息不包含commit时间戳。
    • true:设为true时,解码信息包含commit时间戳。
  • only-local:

    是否仅解码本地日志。

    取值范围:bool型,默认值为true。

    • false:设为false时,解码非本地日志和本地日志。
    • true:设为true时,仅解码本地日志。
  • white-table-list:

    白名单参数,包含需要进行解码的schema和表名。

    取值范围:包含白名单中表名的字符串,不同的表以','为分隔符进行隔离;使用'*'来模糊匹配所有情况;schema名和表名间以'.'分隔,不允许存在任意空白符。例如:

    select * from pg_logical_slot_peek_changes('slot1', NULL, 4096, 'white-table-list', 'public.t1,public.t2,*.t3,my_schema.*');
  • max-txn-in-memory:

    内存管控参数,单位为MB,单个事务占用内存大于该值即进行落盘。

    取值范围:0~100的整型,默认值为0,即不开启此种管控。

  • max-reorderbuffer-in-memory

    内存管控参数,单位为GB,拼接-发送线程中正在拼接的事务总内存(包含缓存)大于该值则对当前解码事务进行落盘。

    取值范围:0~100的整型,默认值为0,即不开启此种管控。

  • include-user:

    事务的BEGIN逻辑日志是否输出事务的用户名。事务的用户名特指授权用户——执行事务对应会话的登录用户,它在事务的整个执行过程中不会发生变化。

    取值范围:bool型,默认值为false。

    • false:设为false时,事物的BEGIN逻辑日志不输出事务的用户名。
    • true:设为true时,事物的BEGIN逻辑日志输出事务的用户名。
  • exclude-userids:

    黑名单用户的OID参数。只支持SQL函数解码时使用,不支持启动逻辑解码任务时指定。

    取值范围:字符串类型,指定黑名单用户的OID,多个OID通过','分隔,不校验用户OID是否存在。

  • exclude-users:

    黑名单用户的名称列表。

    取值范围:字符串类型,指定黑名单用户名,通过','分隔,不校验用户名是否存在。

  • dynamic-resolution:

    是否动态解析黑名单用户名。

    取值范围:bool型,默认值为true。

    • false:设为false时,当解码观测到黑名单exclude-users中用户不存在时将会报错并退出逻辑解码。
    • true:设为true时,当解码观测到黑名单exclude-users中用户不存在时继续解码。
  • standby-connection:

    仅流式解码设置,是否仅限制备机解码。只支持SQL函数解码时使用,不支持启动逻辑解码任务时指定。

    取值范围:bool型,默认值为false。

    • true:设为true时,仅允许连接备机解码,连接主机解码时会报错退出。
    • false:设为false时,不做限制,允许连接主机或备机解码。
  • sender-timeout:

    仅流式解码设置,内核与客户端的心跳超时阈值。当该时间段内没有收到客户端任何消息,逻辑解码将主动停止,并断开和客户端的连接。单位为毫秒(ms)。

    取值范围:0~2147483647的int型,默认值取决于GUC参数logical_sender_timeout的配置值。

  • enable-heartbeat:

    仅流式解码时设置,是否输出心跳日志。

    取值范围:bool型,默认值为false。

    • true:设为true时,输出心跳日志。
    • false:设为false时,不输出心跳日志。

    若开启心跳日志选项,此处说明心跳日志如何解析:二进制格式首先是字符'h'表示是消息是心跳日志,之后是心跳日志内容,分别是8字节uint64,直连DN解码场景代表LSN,表示发送心跳逻辑日志时读取的WAL日志结束位置,而在分布式强一致解码场景为 CS N,表示发送心跳逻辑日志时已发送的解码日志事务CSN;8字节uint64,直连DN解码场景代表LSN,表示发送心跳逻辑日志时刻已经落盘的WAL日志的位置,而在分布式强一致解码场景为CSN,表示集群下一个提交事务将获得的CSN;8字节int64代表时间戳(从1970年1月1日开始),表示最新解码到的事务日志或检查点日志的产生时间戳。关于消息结束符:如果是二进制格式则为字符'F',如果格式为text或者json且为批量发送则结束符为0,否则没有结束符。消息内容采用大端字节序进行数据传输。具体格式见下图(考虑到前向兼容性,相关部分仍保留着LSN的命名方式,实际含义依具体场景而定):

  • parallel-decode-num:

    仅流式解码设置有效,并行解码的Decoder线程数量;系统函数调用场景下此选项无效,仅校验取值范围。

    取值范围:1~20的int型,取1表示按照原有的串行逻辑进行解码,取其余值即为开启并行解码,默认值为1。

    当parallel-decode-num不配置(即为默认值1)或显式配置为1时,下述“并行解码”中的选项不可配置。

  • output-order:

    仅流式解码设置有效,是否使用CSN顺序输出解码结果;系统函数调用场景下此选项无效,仅校验取值范围。

    取值范围:0或1的int型,默认值为0。

    • 0:设为0时,解码结果按照事务的COMMIT LSN排序,当且仅当解码复制槽的confirmed_csn列值为0(即不显示)时可使用该方式,否则报错。
    • 1:设为1时,解码结果按照事务的CSN排序, 当且仅当解码复制槽的confirmed_csn列值为非零值时可使用该方式,否则报错。
    • 当output-order不配置(即为默认值0,按照COMMIT LSN排序)或显式配置为0时,下述“分布式强一致解码”中的选项不可配置。
    • 在流式解码场景,DN收到来自CN的逻辑解码连接时,output-order选项失效,默认采用CSN序解码。
  • auto-advance:

    仅流式解码设置有效,是否允许自主推进逻辑复制槽。

    取值范围:boolean型,默认值为false。

    • true:设为true时,在已发送日志都被确认推进且没有待发送事务时,推进逻辑复制槽到当前解码位置。
    • false:设为false时,完全交由复制业务调用日志确认接口推进逻辑复制槽。
  • skip-generated-columns:

    逻辑解码控制参数,用于跳过生成列的输出。对UPDATE和DELETE的旧元组无效,相应元组始终会输出生成列。分布式版本暂不支持生成列,此配置选项暂无实际影响。只支持SQL函数解码时使用,不支持启动逻辑解码任务时指定。

    取值范围:boolean型,默认值为false。
    • true:表示不输出生成列的解码结果。
    • false:表示输出生成列的解码结果。
support.huaweicloud.com/fg-gaussdb-dist/gaussdb-18-0028.html