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.name property
连接器配置中不再使用。如需更多信息,请参阅 表 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.names

database.history.consumer.* (DBZ-5043)

schema.history.internal.consumer.*

database.history.kafka.bootstrap.servers (DBZ-5043)

schema.history.internal.kafka.bootstrap.servers

database.history.kafka.topic (DBZ-5043)

schema.history.internal.kafka.topic

database.history.producer.* (DBZ-5043)

schema.history.internal.producer.*

database.server.name (DBZ-5043)

topic.prefix

mongodb.name (MongoDB)

topic.prefix

schema_blacklist (DBZ-5045)

schema_exclude_list

schema_whitelist (DBZ-5045)

schema_include_list

应用到 MySQL 连接器的更改
  • MySQL 连接器不再支持旧的 JDBC 传统日期/时间属性(DBZ-4965)。
应用到 MongoDB 连接器的更改
  • MongoDB 连接器不再支持直接来自 oplog 的流。更改流代表了使用 MongoDB 执行更改数据捕获的高级机制。连接器现在将 oplog 数据捕获和解码到 MongoDB 更改流,而不是直接读取 oplog 数据,这会将集合中发生的更改作为事件流公开。Debezium 连接器订阅流,然后将更改下游提供给 Kafka。更改流的转换提供了各种好处,包括从非主节点流更改的功能,以及为下游用户提供完整文档表示的更新事件。
  • 配置属性 mongodb.nametopic.prefix 属性替代。
应用到 PostgreSQL 连接器的更改
  • 协议缓冲区(protobuf)解码不再被支持(DBZ-703)。
  • wal2json 插件不再被支持(DBZ-4156)。
  • PostgreSQL 事务 ID 现在是 32 位整数,可滚动。为了简化事务的重复数据删除,LSN 现在作为标识符的一部分被包括(DBZ-5329)。
应用到 SQL Server 连接器的更改
  • 如果没有为 SQL Server 数据库启用 SSL,或者您想要不使用 SSL 连接到数据库,请通过将连接器配置中的 database.encrypt 属性的值设置为 false 来禁用 SSL。
  • database.dbname 属性由 database.names 属性替代。

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
  • 现在,您可以使用 ComputePartition SMT 根据某些字段将数据路由到特定的主题分区。DBZ-5847
  • 现在,您可以配置 event.processing.failure.handling.mode,以启用 PostgreSQL 连接器跳过失败的 LSN 检查。DBZ-6012
  • 现在,当您在可插拔数据库部署(CDB)中使用 Oracle 连接器时,连接器偏移会预先正确地进行。DBZ-6125
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat