码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 3.canal解析binlog送入kafka


    【README】

    1.本文介绍了 canal把日志解析后送入到kafka的配置;

    2.canal抽取增量binlog日志的架构图,参见
    2.canal服务器配置及java客户端_PacosonSWJTU的博客-CSDN博客mysql master节点可以开启biglog日志记录功能,开启后每次向mysql服务端发送写操作命令,会把命令记录在一种特殊的文件中,这个特殊的文件称为biglog日志。若服务器异常退出,借用binlog可以恢复数据!二进制日志索引文件(文件名后缀为.index)用于记录所有的二进制文件;二进制日志文件(文件名后缀为.00000*)记录数据库所有的 DDL 和 DML(除了数据查询语句)语句事件;4)查看日志文件及日志索引文件// 内容如下;https://blog.csdn.net/PacosonSWJTU/article/details/1269033803.原理如下:

    • 即 canal服务器做了kafka的配置,即canal服务器会启动一个线程,这个线程创建一个kafka生产者;
    • canal在做增量binlog解析时,把解析结果送入 kafka(生产者)即可; 

    【2】canal解析结果送入kafka配置

    【2.1】修改canal配置

    1)服务器配置修改如下。

    1. // canal.properties 修改如下。
    2. // 服务器模式为kafka
    3. canal.serverMode = kafka
    4. // kafka集群节点列表
    5. kafka.bootstrap.servers = centos201:9092,centos202:9092,centos203:9092

    2)example 实例的 instance.properties 修改如下。

    1. // instance.properties 修改如下。
    2. // slave机器编号,与mysql的master机器编号区别开
    3. canal.instance.mysql.slaveId=201
    4. // mysql服务器master节点的ip及端口
    5. canal.instance.master.address=192.168.163.201:3306
    6. // 连接到master节点的用户名与密码
    7. canal.instance.dbUsername=canal
    8. canal.instance.dbPassword=canal
    9. // kafka topic
    10. canal.mq.topic=canal_topic

    3)修改完成;

    重新启动 canal 服务器。

    bin/startup.sh


     【3】kafka配置 

    1)创建topic, canal_topic

    kafka-topics.sh --bootstrap-server centos201:9092 --create --topic canal_topic --partitions 3 --replication-factor 2

    2)命令行开启 canal_topic 的消费者:

    [root@centos201 conf]# kafka-console-consumer.sh --topic canal_topic --bootstrap-server centos201:9092 

    3)插入数据,并查看kafka消费者消费效果:

    3.1)插入数据:

    1. INSERT INTO trcanal.user_inf_tbl (id, name, sex) VALUES
    2. ('20220917_0028', 'zhangsan0027', 'male27')
    3. ;

    3.2)kafka消费者打印消息:

    1. [root@centos201 conf]# kafka-console-consumer.sh --topic canal_topic --bootstrap-server centos201:9092
    2. {"data":[{"id":"20220917_0028","name":"zhangsan0027","sex":"male27"}],"database":"trcanal","es":1663408824000,"id":3,"isDdl":false,"mysqlType":{"id":"varchar(20)","name":"varchar(255)","sex":"varchar(255)"},"old":null,"pkNames":["id"],"sql":"","sqlType":{"id":12,"name":12,"sex":12},"table":"user_inf_tbl","ts":1663408825413,"type":"INSERT"}
    3. {"data":[{"id":"20220917_0028","name":"zhangsan0027","sex":"male27"}],"database":"trcanal","es":1663408824000,"id":3,"isDdl":false,"mysqlType":{"id":"varchar(20)","name":"varchar(255)","sex":"varchar(255)"},"old":null,"pkNames":["id"],"sql":"","sqlType":{"id":12,"name":12,"sex":12},"table":"user_inf_tbl","ts":1663408825452,"type":"INSERT"}

    canal解析增量binlog日志后,成功送入kafka;

    4)数据结构:


     【补充】

    显然 canal 解析增量binlog日志,在重放日志后,可能产生重复数据(这是我们需要注意的);

  • 相关阅读:
    网络学习(12)|性能优化与调试:HTTP性能优化与分析
    Ef Core实现数据审计与软删除
    【Django | allauth】登录_注册_邮箱验证_密码邮箱重置
    树查找(暑假每日一题 18)
    使用云过程中,云共享需要注意哪些内容
    华为云云耀云服务器L实例评测 | 使用UnixBench对华为云云耀云服务器L实例性能测试
    搭建云平台过程中的错误及解决方案1
    小心这几个职场中容易触碰的规则
    作业 day4
    uniapp自动识别并切换到pad端、pc端【不断更新】【伸手党福利】
  • 原文地址:https://blog.csdn.net/PacosonSWJTU/article/details/126906889
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号