云数据库 GAUSSDB-逻辑解码选项:通用选项(串行解码和并行解码均可配置,但可能无效,请参考相关选项详细说明)
通用选项(串行解码和并行解码均可配置,但可能无效,请参考相关选项详细说明)
- include-xids:
取值范围:boolean型,默认值为true。
- false:设为false时,解码出的data列不包含xid信息。
- true:设为true时,解码出的data列包含xid信息。
- skip-empty-xacts:
取值范围:boolean型,默认值为false。
- false:设为false时,解码时不忽略空事务信息。
- true:设为true时,解码时会忽略空事务信息。
- include-timestamp:
取值范围:boolean型,针对并行解码场景默认值为false,针对SQL函数解码和串行解码场景默认值为true。
- false:设为false时,解码信息不包含commit时间戳。
- true:设为true时,解码信息包含commit时间戳。
- only-local:
取值范围:boolean型,默认值为true。
- false:设为false时,解码非本地日志和本地日志。
- true:设为true时,仅解码本地日志。
- white-table-list:
取值范围:包含白名单中表名的字符串,不同的表以','为分隔符进行隔离;使用'*'来模糊匹配所有情况;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,即不开启此种管控。
并行解码-取值范围:0~max_process_memory总量的25%,默认值为max_process_memory/4/1024,其中1024为kB到MB的单位转换,0表示不开启此条内存管控项。
- max-reorderbuffer-in-memory
内存管控参数,单位为GB,拼接-发送线程中正在拼接的事务总内存(包含缓存)大于该值则对当前解码事务进行落盘。
串行解码-取值范围:0~100的整型,默认值为0,即不开启此种管控。
并行解码-取值范围:1~max_process_memory总量的50%,默认值为1与max_process_memory/1048576*10%较大值,其中1048576为KB到GB的单位转换。
- desc-memory-limit
内存管控参数,单位为MB,逻辑解码任务维护的表元信息总内存大于该值时,触发淘汰机制清理部分表元信息。
取值范围:10~1024的整型,默认值为100。
- include-user:
事务的BEGIN逻辑日志是否输出事务的用户名。事务的用户名特指授权用户——执行事务对应会话的登录用户,它在事务的整个执行过程中不会发生变化。
取值范围:boolean型,默认值为false。
- false:设为false时,事务的BEGIN逻辑日志不输出事务的用户名。
- true:设为true时,事务的BEGIN逻辑日志输出事务的用户名。
- exclude-userids:
取值范围:字符串类型,指定黑名单用户的OID,多个OID通过','分隔,不校验用户OID是否存在。
- exclude-users:
取值范围:字符串类型,指定黑名单用户名,通过','分隔,不校验用户名是否存在。
- dynamic-resolution:
是否动态解析黑名单用户名。如果解码某条X LOG ,且XLOG写入时,用户未创建,则认为用户不存在。
取值范围:boolean型,默认值为true。
- false:设为false时,当解码观测到黑名单exclude-users中用户不存在时将会报错并退出逻辑解码;当用户存在,黑名单功能正常过滤用户的操作。
- true:设为true时,当解码观测到黑名单exclude-users中用户不存在时不报错,并正常解码;当用户存在,黑名单功能正常过滤用户的操作。
- standby-connection:
取值范围:boolean型,默认值为false。
- true:设为true时,仅允许连接备机解码,连接主机解码时会报错退出。
- false:设为false时,不做限制,允许连接主机或备机解码。
如果主机资源使用率较大,且业务对增量数据同步的实时性不敏感,建议进行备机解码;如果业务对增量数据同步的实时性要求高,并且主机业务压力较小,建议使用主机解码。
- sender-timeout:
仅流式解码设置,内核与客户端的心跳超时阈值。如果该时间段内没有收到客户端任何消息,逻辑解码将主动停止,并断开和客户端的连接。单位为毫秒(ms)。
取值范围:0~2147483647的int型,默认值取决于GUC参数logical_sender_timeout的配置值。配置为0,表示逻辑解码不会主动断开和客户端的连接,如果设置过小,例如1ms,则可能存在解码任务中断风险。
- change-log-max-len:
逻辑日志缓存长度上限参数,单位为字节,仅并行解码有效,串行解码及SQL函数解码无效。如果单条解码结果长度超过上限,则会销毁重新分配大小为1024字节的内存并缓存。过长会增加内存占用,过短会频繁触发内存申请和释放的操作,不建议设置成小于1024的值。
取值范围:1~65535,默认值为4096。
- max-decode-to-sender-cache-num:
并行解码日志的缓存条数阈值,仅并行解码有效,串行解码及SQL函数解码无效。缓存中的日志条数未超过这个阈值时,使用完毕的解码日志将置入缓存,否则直接释放。
取值范围:1~65535,默认值为4096。
- enable-heartbeat:
取值范围:boolean型,默认值为false。
- true:设为true时,输出心跳日志。
- false:设为false时,不输出心跳日志。
若开启心跳日志选项,此处说明并行解码场景心跳日志如何解析:二进制格式首先是字符'h'表示消息是心跳日志,之后是心跳日志内容,分别是8字节uint64代表LSN,表示发送心跳逻辑日志时读取的WAL日志结束位置;8字节uint64代表LSN,表示发送心跳逻辑日志时刻已经落盘的WAL日志的位置;8字节int64代表时间戳(从1970年1月1日开始),表示最新解码到的事务日志或检查点日志的产生时间戳。关于消息结束符:如果是二进制格式则为字符'F',如果格式为text或者json且为批量发送则结束符为0,否则没有结束符。具体解析见下图:
- parallel-decode-num:
仅流式解码设置有效,并行解码的Decoder线程数量;系统函数调用场景下此选项无效,仅校验取值范围。
取值范围:1~20的int型,取1表示按照原有的串行逻辑进行解码,取其余值即为开启并行解码,默认值为1。
当parallel-decode-num不配置(即为默认值1)或显式配置为1时,下述“并行解码”中的选项不可配置。
- output-order:
仅流式解码设置有效,代表是否使用 CS N顺序输出解码结果;系统函数调用场景下此选项无效,仅校验取值范围。
取值范围:0或1的int型,默认值为0。
- 0:设为0时,解码结果按照事务的COMMIT LSN排序,当且仅当解码复制槽的confirmed_csn列值为0(即不显示)时可使用该方式,否则报错。
- 1:设为1时,解码结果按照事务的CSN排序,当且仅当解码复制槽的confirmed_csn列值为非零时可使用该方式,否则报错。
-
仅流式解码设置有效,代表是否允许自主推进逻辑复制槽。
取值范围:boolean型,默认值为false。
- true:设为true时,在已发送日志都被确认推进且没有待发送事务时,推进逻辑复制槽到当前解码位置。
- false:设为false时,完全交由复制业务调用日志确认接口推进逻辑复制槽。
- enable-ddl-decoding:
取值范围:boolean型,默认值为false。
- true:值为true时,开启DDL语句的逻辑解码。
- false:值为false时,不开启DDL语句的逻辑解码。
- enable-ddl-json-format:
取值范围:boolean型,默认值为false。
- true:值为true时,传送JSON格式的DDL反解析结果。
- false:设为false时,传送decode-style指定格式的DDL反解析结果。
- skip-generated-columns:
逻辑解码控制参数,用于跳过存储生成列的输出。对UPDATE和DELETE的旧元组无效,相应元组始终会输出存储生成列。
取值范围:boolean型,默认值为false/off。
- true/on:值为true/on时,不输出存储生成列的解码结果。
- false/off:设为false/off时,输出存储生成列的解码结果。
虚拟生成列不受此参数控制,DML的解码结果始终不会输出虚拟生成列。
- restart-lsn:
逻辑解码控制参数,用于指定解码开始点,逻辑解码会从restart-lsn该点往后找到一个一致性点(consistency lsn),然后从consistency lsn点开始解码并输出数据。
取值范围:字符串类型,格式类型为"XXXXXXXX/XXXXXXXX",其中"0/0"为无效值。
1、推荐设置复制选项restart-lsn时,不设置复制参数startposition。
2、当复制选项restart-lsn和复制参数startposition同时使用时,restart-lsn必须小于startposition,且根据restart-lsn查找到的一致性点的confirm_flush也需要小于等于startposition,防止startposition点之后的事务漏发。
3、当设置复制选项restart-lsn,不设置复制参数startposition时,根据restart-lsn查找到的一致性点进行解码并输出数据,若设置复制参数startposition时,根据restart-lsn查找到的一致性点进行解码,以startposition位置向客户端发送数据。
4、仅多版本数据字典类型的复制槽才支持该选项。
- GaussDB内核_GaussDB数据库内核_高斯数据库内核_华为云
- GaussDB查版本命令_GaussDB命令参考_高斯数据库查版本命令-华为云
- GaussDB命令_GaussDB数据库命令_高斯数据库命令-华为云
- GaussDB版本查询_华为云GaussDB的作用_高斯数据库版本查询_华为云
- 华为iot设备接入_物联网设备接入云平台_设备接入IOTDA
- GaussDB企业数据库云平台_GaussDB下载_高斯数据库云平台
- GaussDB产品特性_gaussdb最大优势_高斯数据库产品特性_华为云
- 主机安全防暴力破解最佳实践-华为云
- 如何购买GaussDB_GaussDB 定价与计费_如何购买高斯数据库-华为云
- 容器云平台是什么_CCE证书_云平台容器技术