CDC Source
下文介绍在向导模式中使用日志采集类型的数据源配置项。 该类型主要针对MySQL、Oracle、SQLServer JDBC、PostgreSQL这四种支持开启日志查询的业务数据库。
配置项操作和解释
- 操作页面:
- 参数解释
配置项 | 说明 |
---|---|
任务类型 | 日志采集模式通过采集日志信息实现数据实时采集,不同数据源类型有不同的日志管理方案: MySQL——Binlog Oracle——LogMiner SQLServer——CDC PostgreSQL——WAL |
是否分表 | 该配置项仅对MySQL—>Hive的采集任务生效 在分表模式下创建多个分组,按组写入不同的Hive表,实现一个任务完成多对多的实时采集,减少线上任务的配置工作。 |
表 | 支持多选。 当选择多张表时,需要保证选中的表结构是一致的,否则会导致采集任务失败。该场景适用于业务表数据量过大,已经做了分表处理,但是做数据采集时需要一起采集的情况。(该场景无法保证数据按业务顺序写入) |
采集起点 | 用户可选择从任务运行时开始、按时间选择、按文件选择三种采集起点: 从任务运行时开始:任务提交后当状态变为"运行中"时,开始实时采集; 按时间选择:以用户选择的时间作为采集起点(非完全精准); 按文件选择:根据用户指定的binlog、LogMiner文件开始采集; |
数据操作 | 用户可选择Insert、Update、Delete这三种数据操作。 |
格式转化 | 嵌套JSON平铺:采集的日志信息,可能会出现多层嵌套格式的JSON,如{"a":1, "b": {"c":3}}。勾选格式转化后,该JSON会被分解为{"a":1,"b_c":3}。(如果写入Hive目标表,必须勾选格式转化) 表结构解析:将采集到的日志信息按源表结构进行还原,方便下游的数据分析。(目前仅支持Oracle数据源) |
高级配置 | 以JSON格式添加高级参数,支持的参数请参考Connector Options。 写法参考: { "scan.fetch-size":200 } |
如何开启数据库日志采集
各类数据库开启日志方式不同,下文链接供参考:
常见问题答疑
MySQL
- 采集mysql binlog 发现采集不到数据
- 先查看binlog是否开启,show variables like '%log_bin%' ;
- 再确定binlog_format 是否设置为ROW 注意 binlog_format 必须设置为 ROW,因为在 STATEMENT 或 MIXED 模式下,Binlog 只会记录和传输 SQL 语句(以减少日志大小),而不包含具体数据;
- 如果是通过从节点某个专门的账号连接主节点,这个账号需要拥有全局的 REPLICATION 权限;
- 采集mysql binlog 发现采集不到数据
Oracle
实时采集到的操作标识字段 Operate Time代表什么意思?
在进行实时采集时会采集Oracle日志中Insert、Update、Delete的操作时间,将其保存为新的字段
OperateTime
(和TS一级)添加到实时采集后的Json中。Oracle实时采集为什么不能按时间选择采集起点?
Oracle Logminer中无法获取日志的时间信息,所以无法按时间选择采集起点。
Oracle19C开启Logminer应该执行哪些命令?
Oracle12C以上版本均可参考12C命令进行操作。
选择数据源后,提示'"异常:supplemental_log_data_all is not enabled,please execute sql to enable this config:alter database add supplemental log data (all) columns;" '怎么处理?
- 先确认Oracle数据库已经开启All等级扩充日志;
- 若无法对database开启All级别扩充日志,可针对监听表进行all级别扩充日志的开启,并在实时采集任务的高级配置中补充
{"check":false}
参数,绕过底层插件对database权限的验证;
PostgreSQL
任务处于
运行中
状态,但长时间没有数据写入写出,怎么办?可从PostgreSQL的数据情况切入进行排查,若数据库内长时间无数据写入且数据库连接正常,则需要查看数据库是否存在锁表现象。锁表会导致数据无法写入Postgresql,但实时采集读取的是WAL日志,因此实时采集正常,但由于没有数据写入,所以WAL日志内容无新增。