2.5. 新的 Debezium 功能
Debezium 2.1.4 包括以下更新。
2.5.1. 可能会造成问题的更改 复制链接链接已复制到粘贴板!
Debezium 2.1.4 中的以下变化代表了连接器行为的显著区别,需要与早期 Debezium 版本不兼容的配置更改:
- 应用到多个连接器的更改
- 数据库历史记录主题
- 现在被称为数据库 schema 历史主题。
- 内存队列的对象大小限制
- 使用反映值不再计算大小。相反,队列限制会根据消息模式进行估算。(DBZ-2766) (MongodB, MySQL, Oracle, PostgreSQL, SQL Server )
- 暴露连接器指标
- Debezium 之前将连接器指标作为快照、流和基于历史记录的 Bean 的单个元组公开。在这个版本中,连接器指标作为多分区方案公开。因此,指标名称及其公开的方式改变(DBZ-4726)。如果使用 Grafana、Prometheus 或类似的 JMX 框架来收集指标,请查看收集指标的过程。
database.server.nameproperty- 连接器配置中不再使用。如需更多信息,请参阅 表 2.1 “连接器配置属性的更新”。
- 模式定义
- 为了命名和版本一致性,Debebe 模式现在在中央点中定义(DBZ-4365、 DBZ-5044)。如果使用模式 registry,则可能会出现架构兼容性问题。
- Debezium 存储更改
-
在以前的版本中,Debezium 支持作为 debezium-core 模块的一部分读取和存储偏移、历史记录和其他数据。此发行版本包括一个新的
debezium-storage模块,它带有在本地文件系统中或 Kafka (DBZ-5229) 存储数据的实现。这种方法中实施的扩展点使得以后引入其他存储实施。作为升级的一部分,您可能需要根据代码所需的存储模块实现调整应用程序的依赖关系。 - 在通信异常后重启
- 当抛出与通讯相关的异常时(SqlException, IOException),默认情况下 Debezium MongoDB, MySQL, PostgreSQL, and SQL Server 连接器现在会自动重启 (DBZ-5244)。
skipped.operations配置选项的默认值-
现在,默认值为
truncate(DBZ-5497) (MongoDB, MySQL, Oracle, PostgreSQL, SQL Server) schema.name.adjustment.mode属性的默认值-
默认值为
none(DBZ-5541)。之前的默认选项是,对于使用 Avro converter 的客户来说,avro是一个很好的选择,但在使用 JSON 转换器的环境中造成混淆。作为此更改的一部分,sanitize.field.names属性不再可用。 - 删除了连接器配置属性
Debezium 1.x 版本中提供的几个属性不再有效,并被新属性替代。如需更多信息,请参阅下表:
Expand 表 2.1. 连接器配置属性的更新 1.x 属性 与 2.x 属性等效 数据库站(传递数据库驱动程序属性)(DBZ-5043)driver.*database.dbname(SQL Server)database.namesdatabase.history.consumer.*(DBZ-5043)schema.history.internal.consumer.*database.history.kafka.bootstrap.servers(DBZ-5043)schema.history.internal.kafka.bootstrap.serversdatabase.history.kafka.topic(DBZ-5043)schema.history.internal.kafka.topicdatabase.history.producer.*(DBZ-5043)schema.history.internal.producer.*database.server.name(DBZ-5043)topic.prefixmongodb.name(MongoDB)topic.prefixschema_blacklist(DBZ-5045)schema_exclude_listschema_whitelist(DBZ-5045)schema_include_list- 应用到 MySQL 连接器的更改
- MySQL 连接器不再支持旧的 JDBC 传统日期/时间属性(DBZ-4965)。
- 应用到 MongoDB 连接器的更改
- MongoDB 连接器不再支持直接来自 oplog 的流。更改流代表了使用 MongoDB 执行更改数据捕获的高级机制。连接器现在将 oplog 数据捕获和解码到 MongoDB 更改流,而不是直接读取 oplog 数据,这会将集合中发生的更改作为事件流公开。Debezium 连接器订阅流,然后将更改下游提供给 Kafka。更改流的转换提供了各种好处,包括从非主节点流更改的功能,以及为下游用户提供完整文档表示的更新事件。
-
配置属性
mongodb.name被topic.prefix属性替代。
- 应用到 PostgreSQL 连接器的更改
- 应用到 SQL Server 连接器的更改
-
如果没有为 SQL Server 数据库启用 SSL,或者您想要不使用 SSL 连接到数据库,请通过将连接器配置中的
database.encrypt属性的值设置为false来禁用 SSL。 -
database.dbname属性由database.names属性替代。
-
如果没有为 SQL Server 数据库启用 SSL,或者您想要不使用 SSL 连接到数据库,请通过将连接器配置中的
2.5.2. 提升到正式发行(GA)的功能 复制链接链接已复制到粘贴板!
在 Debezium 2.1.4 发行版本中,以下功能从技术预览提升到正式发布 (GA):
2.5.3. Debezium 功能更新 复制链接链接已复制到粘贴板!
这个 Debezium 2.1.4 发行版本提供多个功能更新和修复,包括以下列表中的项目:
- MySQL 连接器现在支持 binlog 压缩。DBZ-2663
- 限制了 "Streaming requested from LSN" 警告的日志输出量。DBZ-3007
- 在 MySQL 连接器解析器中实现对 JSON_TABLE 的支持。DBZ-3575
- 现在,您可以通过发送信号来暂停或停止增量快照。DBZ-4251
- 现在,当用户帐户缺少所需的 CDCReader 权限时,SQL Server 连接器会失败。DBZ-4346
- MongoDB 连接器现在可以解码二进制有效负载 DBZ-4600
- 现在,您可以暂停并恢复正在运行的增量快照 DBZ-4727
- 现在,您可以通过指定连接字符串 URI DBZ-4733来指定 MongoDB 连接设置
-
MongoDB 连接器的
field.exclude.list属性现在可以与具有相同名称的不同集合的字段一起工作。DBZ-4846 -
PostgresSQL 连接器现在在错误
PSQLException: 此连接被关闭后重试连接。DBZ-4948 - MySQL 连接器现在在历史记录记录 DBZ-4998中存储事件标头时间戳
- LogMiner 批处理大小现在根据当前的批处理大小进行调整,而不是默认大小。DBZ-5005
- 现在,您可以为 ByLogicalTableRouter SMT 将 最大条目数配置为缓存。DBZ-5072
- 新的扩展 API 允许您查询 Debezium 版本。DBZ-5092
-
将字段
ts_ms添加到 schema 更改事件,以识别事件何时发生或被处理。DBZ-5098 -
当 MongoDB 连接器转换 oplog 条目时,现在使用
RawBsonDocument类而不是文档。DBZ-5113 - MySQL 提交时间戳 DBZ-5170
- 事件 SCN 现在包含在 Oracle 事件记录中。DBZ-5225
-
为了避免出现
UnknownTopicOrPartitionException,您现在可以设置database.history.kafka.create.timeout.ms以指定连接器等待创建 Kafka 历史记录主题的时长。DBZ-5249 - 修改主密钥后,在源和目标接收器之间现在 LOB 类型数据一致。DBZ-5295
- MySQL 连接器现在在尝试读取 binlog 时收到错误后重试。DBZ-5333
- 在增量快照期间,Oracle 连接器现在使用包含句点的名称从数据库正确解析事件。DBZ-5336
- 支持带有 schema 前缀的 PostgreSQL 默认值功能调用。DBZ-5340
-
MySQL 连接器无法为 MySQL 8.x 转换未签名的
tinyint数据类型。DBZ-5343 - 当 Oracle 连接器检测到一个不受支持的 LogMiner 操作时,它会记录警告信息。DBZ-5351
- 当唯一索引基于系统和非系统生成的列时,Oracle 连接器会抛出 NullPointerException。DBZ-5356
- 修复了列哈希 v2 无法用于 MySQL 连接器的问题。DBZ-5366
- 修复了 JSON 扩展失败的问题,用于包含第一个数组不包含元素的嵌套阵列。DBZ-5367
- 修复了一个在使用带有 MongoDB 兼容性的 AWS DocumentDB 时,MongoDB 连接器连接失败的错误。DBZ-5371
- 修复了 Oracle 连接器以意外格式记录 CommitScn 的问题。DBZ-5381
- 修复了 PostgreSQL 连接器错误 org.postgresql.util.PSQLException: Bad value for type timestamp/date/time: CURRENT_TIMESTAMP。DBZ-5384
-
修复了在历史记录主题中缺少
previousID属性的 MySQL 连接器的问题。DBZ-5386 - 检查约束根据 schema 更改事件中的约束引入了一个列。DBZ-5390
- 修复了 PostgreSQL 连接器捕获为 PRIMARY KEY 引用的列时发生的问题,但没有在表中定义匹配的列。DBZ-5398
-
在将 Oracle 与可插拔数据库支持 DBZ-5399搭配使用时,明确指定
signal.data.collection的文档 - PostgreSQL 连接器现在使用 GMT 指定时间戳。DBZ-5403
-
临时和增量快照现在支持
额外的条件参数,用于指定要捕获的数据子集。DBZ-5327 - 添加逻辑来启用 Oracle 连接器,以便在流 DBZ-5441过程中安全地不支持的非关系表
- SQL Server 连接器任务现在在 "Socket closed" 异常后重启。DBZ-5478
- 在正则表达式主题命名策略中增加唯一性键字段/值。DBZ-5480
- MySqlErrorHandler 应处理 SocketException DBZ-5486
- MySQL 连接器现在在连接器模式中添加数据库列注释。DBZ-5489
- 在 schema 历史记录消息中公开默认值和枚举值。DBZ-5511
- 在 BinaryHandlingMode DBZ-5544中支持 BASE64_URL_SAFE
- 在提交源数据库 DBZ-5557 的偏移时提供分区
-
传统的快照进程设置
source.ts_ms.DBZ-5591 - 清理"逻辑名称"配置。DBZ-5594
- MySQL Connector 现在捕获 TRUNCATE 事件。DBZ-5610
- 明确了文档中的 include/exclude 选项的语义。DBZ-5625
-
现在,您可以在发出更改事件时将 MongoDB 连接器配置为包含
before字段。DBZ-5628 - 在 PostgreSQL 连接器中记录非递增快照的增强。DBZ-5639
- 通过减少 REGEXP_LIKE Disjunctions 来提高 LogMiner 查询性能。DBZ-5648
- 您可以配置 MongoDB 连接器尝试向服务器发送心跳消息的频率。DBZ-5736
- 增强了清理主题名称 DBZ-5790 的功能
-
现在,您可以配置
flush.lsn.source,以防止 PostgreSQL 连接器自动将已处理的记录的 LSN 提交到数据库。DBZ-5811 -
现在,您可以使用
ComputePartitionSMT 根据某些字段将数据路由到特定的主题分区。DBZ-5847 -
现在,您可以配置
event.processing.failure.handling.mode,以启用 PostgreSQL 连接器跳过失败的 LSN 检查。DBZ-6012 - 现在,当您在可插拔数据库部署(CDB)中使用 Oracle 连接器时,连接器偏移会预先正确地进行。DBZ-6125