Skip to main content

CaptureChangeMySQL

描述:

从MySQL数据库中检索捕获数据变更 (CDC) 事件。CDC 事件包括插入、更新、删除操作。事件作为单个流文件输出, 按操作发生的时间排序。

标签:

sql, jdbc, cdc, mysql

参数:

如下列表中,必填参数则标识为加粗. 其他未加粗参数,则表示为可选参数。表中同时提到参数默认值设置, 参数还支持 表达式语言, 并且 如果将一个参数认定为"敏感", 表示是加密状态. 在输入一个敏感参数时, 确保 orchsym.properties 文件中存在属性设置 orchsym.sensitive.props.key.

名字默认值允许值列表描述
MySQL主机列表与MySQL群集中的节点相对应的主机/端口项(套接字)的列表。每项之间需要用逗号隔开,比如:host1:port,host2:port,.... 例如: mysql.myhost.com:3306. 该组件实例会尝试按照列表所定义的套接字依次连接。如果MySQL集群配置了容错机制,当中某个节点宕机了,该组件实例会切换连接到处于active正常工作的MySQL集群节点(假设该正常工作的MySQL集群节点的套接字就在该列表当中)。额外提示: MySQL的默认端口号为3306。

支持表达式语言 (仅支持变量)
MySQL驱动包的类名com.mysql.jdbc.DriverMySQL数据库驱动包的全名,比如com.mysql.jdbc.Driver

支持表达式语言 (仅支持变量)
MySQL驱动包位置逗号分隔的文件/文件夹列表、URLs,该配置的位置包含MySQL驱动包以及驱动包所有依赖文件(如果驱动包需要依赖的其他文件)。比如:'/var/tmp/mysql-connector-java-5.1.38-bin.jar' 或者 'file:///var/tmp/mysql-connector-java-5.1.38-bin.jar'

支持表达式语言 (仅支持变量)
用户名访问MySQL集群的用户

支持表达式语言 (仅支持变量)
密码访问MySQL集群的用户的密码

敏感状态
支持表达式语言 (仅支持变量)
Server ID客户端接入MYSQL组复制集群实际上是充当一个简化版的slave(从节点服务器),必须确保其服务器ID(Server ID)在整个组复制集群中的唯一性。如未指定服务器ID,则默认为65535。

支持表达式语言 (仅支持变量)
Database/Schema名称正则匹配填入相应的正则表达式,利用该正则表达式来匹配相应的数据库(或者schemas,取决于目标所使用的'RDBMS'关系型数据库管理系统的术语,进而捕获数据变更CDC(Change Data Capture)事件。正则表达式需要匹配上RDBMS中的数据库名称。如果没设置该正则表达式,数据库名称将不会应用于捕获CDC事件。注意: 即使DDL(Data Definition Language)事件发生在同一集群中的其他的数据库,但当前所连接的数据库也能感知到DDL的变更操作。简而言之,当数据库连接到MySQL集群中的某一数据库时,DDL发生在同集群中的其他的数据库,当前连接的该数据库是能匹配命中的,因为DDL事件是集群感知的。
Table表名填入正则表达式,用来捕获指定CDC事件所影响的表名。正则表达式必须命中匹配的数据库中的表名。如果该属性未设置,则不过滤表名。
最大等待时间30 seconds等待建立连接的最大时间,0代表无尽等待。

支持表达式语言 (仅支持变量)
分布式Map缓存客户端控制器服务API:
DistributedMapCacheClient
实现:
HBase_1_1_2_ClientMapCacheService
CouchbaseMapCacheClient
DistributedMapCacheClientService
RedisDistributedMapCacheClientService
配置一个分布式Map缓存客户端的控制器服务,以便用来保存各表、列等的元数据信息。如果该项未配置,产生的时间将不会包含数据库中的字段类型和名称的元信息。
接收所有记录true
- true
- false
指定是否忽略当前binlog的文件名、binlog的偏移量,接收所有的有效的CDC事件。如果通过鼠标右键查看该组件的'查看状态'发现已有binlog filename、position已读缓存时,该配置的属性会被忽略。此处允许4中不同的配置方案: 1) binlog在'查看状态'中[有]缓存数据(binlog.filename、binlog.position),这些缓存的数据是用来确定下一次接收的开始的位置,此时该配置项'接收所有记录'被忽略。 2) binlog在'查看状态'中[无]缓存数据,与此同时'接收所有记录'被设置为true,这就意味着从binlog的历史数据中的最开始位置进行接收。3) binlog在'查看状态'中[无]缓存数据,且初始化Binlog的文件名称、位置(或偏移量)[未]定义,此时如果设置'接收所有记录'为false就意味着从binlog的历史数据最末尾开始接收。 4) binlog在'查看状态'中[无]缓存数据,且初始化binlog的文件名称、位置(或偏移量)[已]定义,此时如果设置'接收所有记录'为false,则意味着从初始化binlog的文件名称、位置开始接收。如需清空'组件状态'的binlog缓存,右键该组件并选中'组件状态'后,单击'清空状态'即可。
监听Begin/Commit事件false
- true
- false
指定是否发出(在binary log中)与Begin、Commit相关的事件。如果该类Begin/Commit事件,对于下游的流文件处理不是必须项,建议设为false,由此这类事件会被抑制生成,并提高了流文件处理的性能。
监听DDL事件false
- true
- false
指定是否发出(在binary log中)与DDL-Data Definition Language数据定义语言相关的事件,比如: ALTER TABLE、 TRUNCATE TABLE等。 如果该类DDL事件,对于下游的流文件处理不是必须项,建议设为false,由此这类事件会被抑制生成,并提高了流文件处理的性能。
状态更新间隔0 seconds配置(鼠标右键-'查看状态'中的binlog filename/position等)缓存数据内容的更新周期/频率。如果设置为 0 ,状态只会在该组件被停止或强制关闭的情况下更新。如果在某个时候'查看状态'中不包含所需/期望的binlog,该组件[最后一个]发出来的流文件会包含[最新监听到的binlog相关的值],回滚到之前所述的状态,可以通过设置相应的初始Binlog文件名、初始Binlog位置(或偏移量)、初始序列ID来恢复到之前的状态。

支持表达式语言 (仅支持变量)
初始序列ID指定一个初始序列标识号,如果当前序列标识号没有被缓存在组件'状态'(右键-'查看状态')中。如果在组件'状态'中已经缓存了一个序列标识号,该初始化值会被忽略。该组件利用单调递增的序列标识号(数据类型为:整型)来记录流文件生成的顺序。利用这些序列标识符号,可以联合 EnforceOrder 组件来一起确保CDC事件的有序接收。

支持表达式语言 (仅支持变量)
初始Binlog文件名称指定一个初始binlog文件名称,如果当前组件状态没有缓存binlog文件名。如果组件状态中已有binlog缓存文件名称,则忽略该配置项。可以和初始binlog位置联合使用,来跳过之前不感兴趣的CDC事件。该配置内容支持表达式语句。

支持表达式语言 (仅支持变量)
初始Binlog位置指定一个初始binlog位移,如果当前组件状态中没缓存binglog信息。该设置项支持表达式语句。

支持表达式语言 (仅支持变量)

连线:

名字描述
success成功捕获CDC事件并创建相应的流文件。

读取属性:

未提供。

写入属性:

名字描述
cdc.sequence.id表明CDC事件捕获顺序的序列号(严格遵循单调递增的整型数值)。
cdc.event.type用于描述所捕获的CDC事件类型(包括:begin、insert、update、delete、ddl、commit等)。
mime.type组件会将以JSON格式输出内容,并设置mime.type属性为application/json。

状态管理:

范围描述
CLUSTER状态信息,该组件用记录从数据库已经捕获的位移等状态信息(类似指针概念),这样能够便于重启后的恢复当前偏移量/位置的状态。

限制:

该组件没有限制

输入流要求:

组件禁止提供输入流。

系统资源考量:

未提供。