Debezium日常分享系列之:Debezium 3.0.0.CR2发布
新功能和改进
PostgreSQL支持的隔离级别
- PostgreSQL现在已经推出了对快照隔离支持的长期改进!一项新的连接器配置属性,snapshot.isolation.mode,允许连接器在执行初始和临时阻塞快照步骤时控制使用的一致性。有四个隔离级别:可串行化(默认)、可重复读、读已提交和读未提交。
JDBC在特定故障上进行重试刷新
- JDBC sink使用一组缓冲区来提高写入目标数据库的吞吐量。在某些情况下,由于其他应用程序可能锁定了特定的行或表,这些缓冲区的刷新操作可能会面临特定的异常。为了提高用户体验,添加了两个新的配置属性:
- flush.failure.max.retries
- 定义刷新失败时的重试次数。
- flush.failure.retries.wait.ms
- 定义重试之间等待的毫秒数。
- flush.failure.max.retries
重试功能默认启用,尝试最多重试5次,每次重试之间延迟1秒。如果您希望禁用重试,将flush.failure.max.retries设置为0将禁用此功能。
Oracle扩展最大字符串大小支持
- Oracle扩展字符串是一项功能,允许将字符数据的传统4000字节限制提高到32K。这是通过对数据库进行升级,将数据库参数max_string_size设置为EXTENDED来实现的。扩展字符串功能允许使用与4000字节或更小字符数据相同的SQL语法来处理长达32K的字符数据,而无需强制使用基于CLOB的操作。
- 在Debezium 3中,现在可以使用Oracle连接器与使用扩展字符串的数据库,并直接从事务日志中捕获更改。由于扩展字符串在数据库级别上实际上是CLOB操作,因此挖掘此类列类型需要将lob.enabled设置为true。
Oracle CLOB/BLOB默认值支持
- 在某些情况下,Oracle用户可能会将CLOB或BLOB定义为必需的字段,并使用EMPTY_BLOB()或EMPTY_CLOB()函数来定义默认值,以便在字段未提供时使用。在以前的版本中,Debezium不会评估这些特殊函数,因此这些列将被视为可选而不是不可选。
- 从Debezium 3开始,当指定了EMPTY_BLOB()或EMPTY_CLOB()默认值时,该字段将被视为不可选。此外,该字段将包含适当的默认值,即空字节数组或空字符串。