基于canal+kafka+flink实现实时增量同步3:MySQL到Kafka功能演示

看成品:kafka监听Canal投递的binlog日志

(1)在页面新增一个kafka异构搬迁任务

基于canal+kafka+flink实现实时增量同步3:MySQL到Kafka功能演示_第1张图片

选择mysql-kafka的任务模式。数据源选择mysql的数据源(我们是在数据源管理配置的)

基于canal+kafka+flink实现实时增量同步3:MySQL到Kafka功能演示_第2张图片

(2)选择kafka数据源(这些我们是在数据源管理配置的)、kafka主题、canal安装数据源(ssh数据源,就是安装在哪个服务器)、canal安装路径(服务器上的安装路径)

基于canal+kafka+flink实现实时增量同步3:MySQL到Kafka功能演示_第3张图片

(3)配置映射关系,这里只需要配置来源库、来源表就行。可以配置多个。(目标库、目标表、字段映射随意填,因为是从binlog拿的数据,这里是个bug没及时去掉)

基于canal+kafka+flink实现实时增量同步3:MySQL到Kafka功能演示_第4张图片

(4)选择流控制策略。可以选择SparkStreaming或者Flink处理方式

基于canal+kafka+flink实现实时增量同步3:MySQL到Kafka功能演示_第5张图片

(5)我们进入kafka安装目录bin

基于canal+kafka+flink实现实时增量同步3:MySQL到Kafka功能演示_第6张图片

(6)我在数据库更新一条记录(也可以是新增,删除。kafka都能监听到)

基于canal+kafka+flink实现实时增量同步3:MySQL到Kafka功能演示_第7张图片

(7)kafka消费者接收到更新信息

./kafka-console-consumer.sh --bootstrap-server zk的IP:zk端口 --topic testtopic

打印数据:

{"schema":"dataopen","current_ts":1620870469243,"d_st_t":1620870581000,"before":{"api_name":"新增数据api-1"},"d_sr_t":1620870469243,"after":{"api_id":"1024","api_name":"新增数据api-2","api_code":null,"comments":"test1","api_type":"1","icon":null,"api_catalog_id":"26","topic_id":null,"org_id":null,"biz_id":null,"create_staff_id":"1","protocol":"HTTP","request_mode":"POST","request_method":null,"return_data_format":"JSON","request_path":null,"status_cd":"0","is_success":null,"create_date":"2020-05-21 13:54:56","modified_date":"2020-07-09 19:21:53","provider_url_test":"http://xxx:8559/x/daportal/tableController/mysql/api_info","provider_url":"http://xxx:8559/x/daportal/tableController/mysql/api_info","expose_path":"dataApi","call_count":"0","apply_count":"6","need_secret_check":"0","score":null,"publish_date":"2020-06-27 16:48:41","security_level":"","api_kind":"atomic","flow_id":null,"api_version":"","com_acct_id":null},"op_type":"U","op_ts":1620870581000,"table":"dataopen.api_info"}

基于canal+kafka+flink实现实时增量同步3:MySQL到Kafka功能演示_第8张图片

用Tool工具连接kafka:消息成功推到了kafka

基于canal+kafka+flink实现实时增量同步3:MySQL到Kafka功能演示_第9张图片

总结:从图可以看出,我更新了一条某个库某个表的某个字段。kafka消费者接收到了实时的更新信息。要的就是这个效果,从而可以实时同步mysql具体表的增删改查信息。这是基于kafka+canal实现的,下边具体介绍canal的配置,使用,整合kafka。以及代码实现以上功能。到最后实现kafka入库MySQL,一个完整的增量同步功能。

你可能感兴趣的:(项目实战,kafka)