flinkx 实时数据采集 mysql binlog
Binlog插件基本原理
实时采集插件的核心是如何实时捕获数据库数据的变更,对于MySQL数据库而言,阿里开源的Canal已经很好的帮我们实现了基于MySQL数据库增量日志解析,提供增量数据订阅和消费功能。因此这里我们直接用Canal捕获MySQL数据库数据的变更信息,基于FlinkX框架将任务简化成脚本的配置,基于Flink的Checkpoint机制提供了任务的故障恢复,提高了任务的容错性。
基本步骤如下:
- 任务启动时启动Canal线程
- Canal模拟MySQL slave的交互协议,伪装自己为MySQL slave,向MySQL master发送dump协议
- MySQL master收到dump请求,开始推送Binary Log给slave(即Canal)
Canal解析Binary Log 对象(原始为Byte流) - FlinkX获取Canal解析后的对象做二次解析,封装后发送至下游数据源