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.Driver | MySQL数据库驱动包的全名,比如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 | 状态信息,该组件用记录从数据库已经捕获的位移等状态信息(类似指针概念),这样能够便于重启后的恢复当前偏移量/位置的状态。 |
限制:
该组件没有限制
输入流要求:
组件禁止提供输入流。
系统资源考量:
未提供。