使用Canal监听Binlog将数据发送到RocketMQ

news2025/1/11 22:54:48

文章目录

  • 一、部署RocketMQ
  • 二、部署MySQL
    • 1、开启mysql的binlog写入功能
    • 2、创建一个有相关权限的mysql slave账号
  • 三、部署 Canal
    • 1、修改conf/canal.properties配置文件
    • 2、修改conf/example/instance.properties配置文件
  • 四、实际操作


一、部署RocketMQ

win11 部署RocketMQ 和可视化界面
可视化界面是源码,需要在本地编译运行,下面是直接编译好的 jar 包
rocketmq-dashboard-1.0.1-SNAPSHOT.jar

二、部署MySQL

网上有许多教程,在这里不在赘述,部署好后,修改配置文件。

1、开启mysql的binlog写入功能

  [mysql]
  log-bin=mysql-bin #添加这一行就 ok   
  binlog-format=ROW #选择 row 模式    
  server_id=1       #不能和canal的slaveId重复

2、创建一个有相关权限的mysql slave账号

# 创建账号
CREATE USER canal IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'canal';
# 给账号赋权限
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%'; 
# 刷新
FLUSH PRIVILEGES;

三、部署 Canal

下载canal.deployer
我下载的是1.1.5的版本,注意,在部署canal的时候,java版本是1.8,不然会报错

1、修改conf/canal.properties配置文件

# 默认为tcp,我这里选择将监听到的消息发送到rocketMQ
canal.serverMode = rocketmq
# 当前server上部署的instance列表,默认为example
canal.destinations = example
# mq的地址和端口
canal.mq.servers = 127.0.0.1:9876
# 创建的mysql slave账号和密码
canal.instance.tsdb.dbUsername = canal
canal.instance.tsdb.dbPassword = canal
##################################################
#########           RocketMQ         #############
##################################################
rocketmq.producer.group = test
rocketmq.enable.message.trace = false
rocketmq.customized.trace.topic =
rocketmq.namespace =
rocketmq.namesrv.addr = 127.0.0.1:9876
rocketmq.retry.times.when.send.failed = 0
rocketmq.vip.channel.enabled = false

2、修改conf/example/instance.properties配置文件

# mysql从服务Id,未被其他mysql服务使用即可
canal.instance.mysql.slaveId = 1234
# mysql主服务的地址和端口
canal.instance.master.address = 127.0.0.1:3306
# 指定要监听的数据库
canal.instance.defaultDatabaseName = canal_test
# username/password 数据库的用户名和密码
canal.instance.dbUsername=root
canal.instance.dbPassword=123456
# 需要监听的表的表达式,我这里只监听了test数据库下的binlog_test表
# 1.  所有表:.*   or  .*\\..*
# 2.  canal schema下所有表: canal\\..*
# 3.  canal下的以canal打头的表:canal\\.canal.*
# 4.  canal schema下的一张表:canal.test1
# 5.  多个规则组合使用:canal\\..*,mysql.test1,mysql.test2 (逗号分隔)
canal.instance.filter.regex=test\\.binlog_test
# rocketMQ的topic,如果使用rabbitMQ此处配置rabbitMQ的routingkey
canal.mq.topic=ROCKET_TEST

四、实际操作

表的结构和数据
在这里插入图片描述
修改后的数据:
在这里插入图片描述
消息队列里面的消息:
在这里插入图片描述
可以看到有旧数据,新数据,数据库名,表名,语句类型等相关信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1968957.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

u盘sd卡格式化怎么恢复数据:从绝望到希望的全面指南

在数字时代,U盘和SD卡已成为我们日常生活中不可或缺的数据存储设备。然而,一不留神的格式化操作,往往会导致重要数据的瞬间消失,让人倍感焦虑与无助。那么,面对这一突如其来的数据灾难,我们是否只能束手就擒…

大模型套壳祛魅:质疑套壳,理解套壳

过去的 2023 年是大模型元年,在国产大模型数量狂飙突进的同时——已经超过 200 个,「套壳」一直是萦绕在大模型头上的舆论阴云。 从年初到年末,从百度文心一言到零一万物,从字节跳动到谷歌 Gemini,各种「涉嫌套壳」的…

案例精选 | 南大港产业园区卫生计生管理服务中心日志系统建设方案

南大港产业园区,坐落于中国河北省沧州市东南部,是一个集工业生产、科技研发、商贸物流、生态居住等多功能于一体的国内知名综合性产业园区。作为区域经济发展的重要引擎,不仅承载着产业升级的重任,还肩负着提升公共服务水平、保障…

刷题了:513.找树左下角的值|112. 路径总和| 113. 路径总和ii|106.从中序与后序遍历序列构造二叉树|105.从前序与中序遍历序列构造二叉树

513.找树左下角的值 文章讲解:https://programmercarl.com/0513.%E6%89%BE%E6%A0%91%E5%B7%A6%E4%B8%8B%E8%A7%92%E7%9A%84%E5%80%BC.html 视频讲解:https://www.bilibili.com/video/BV1424y1Z7pn/?spm_id_from333.1007.top_right_bar_window_history.content.click&vd_s…

install第三方jar中包含私服依赖,导致项目无法构建

起因:新公司项目引入了一个发短信的jar包,我使用下列命令安装到本地库。 mvn install:install-file -DfileD:\workspace\\resources\WEB-INF\lib\xxxx.sdk.sms-0.0.1-SNAPSHOT.jar -DgroupIdxxxx.sdk.sms -DartifactIdxxxx.sdk.sms-0.0.1-SNAPSHOT -Dv…

Netty 必知必会(三)—— ByteBuf

Netty ByteBuf工作原理,和NIO里ByteBuffer区别? Java NIO 提供了ByteBuffer 作为它 的字节容器,但是这个类使⽤起来过于复杂,⽽且也有些繁琐。 ByteBuf是Netty框架中的一个关键类,专门设计来处理字节数据,…

大模型笔记4 长文本滑动窗口

Extractive QA参考: https://juejin.cn/post/7180925054559977533 https://huggingface.co/learn/nlp-course/en/chapter7/7 目录 滑动窗口例子(提取开始结束点任务) 滑动窗口代码实现 tokenize() 默认添加问题 每个滑窗添加标题和摘要 训练label跨滑窗情况token匹配 …

MyBatis开发: XML配置⽂件

前言 在IDEA的yml文件注释发现乱码 1.配置文件注释中文显示乱码 退出重进,发现不是乱码就成功 一.MyBatis XML配置⽂件 学习了注解的⽅式, 接下来我们学习XML的⽅式. 使⽤Mybatis的注解⽅式,主要是来完成⼀些简单的增删改查功能. 如果需要实现复杂的SQL…

使用Langchain构建简单的数据库Agent

这篇文章我们介绍一个使用LangChain实现SQLagent的方法,LangChain直接内置了自己的SQLagent实现-—SQLDatabaseChain。这个方法使用 SQL Alchemy 与数据库交互。感兴趣的可以考虑一下这两个方案是否可以融合,这样保证SQL的准确性从而提升最终结果的准确率…

修改依赖库

修改依赖库 在开发时,当我们发现使用的依赖库有 bug,需要修改,一般都有这几种处理方式: fork 源码,修复 bug 然后提交 pr,等待作者合并,发布新版本提 issue 等待作者修复(跟方式1类…

从物理学到电气工程:如何自学PLC进入工厂担任助理工程师?

本科物理专业自学 PLC 方向,有机会进厂担任助理电气工程师,但可能会面临一些挑战。在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「PLC的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“…

reactive函数

承上启下 在上一节 ref() 函数中,我们大致理解了 ref() 函数的作用是用来将数据转化为响应式的。但是对于基本类型和引用类型,Vue3底层做的转换不一致:对于基本类型,Vue3 通过 ref() 函数将变量转化为了 RefImpl引用对象从而实现响…

NVIDIA把Llama-3的上下文长度扩展16倍,长上下文理解能力超越GPT-4

在 Llama-3.1 模型发布之前,开源模型与闭源模型的性能之间一直存在较大的差距,尤其是在长上下文理解能力上。 大模型的上下文处理能力是指模型能够处理的输入和输出 Tokens 的总数。这个长度有一个限制,超过这个限制的内容会被模型忽略。一般…

Power功效分析之均值差原理及案例实操分析

Power功效分析常用于实验研究时样本量的计算(或功效值计算),实验研究中均值差的使用较多,具体包括单样本t检验、独立样本t检验、配对t检验、单样本z检验、Mann-whitey检验和配对符号秩和检验等,具体如下表格所述&#…

最新版的,SpringBoot整合Sharding-Jdbc实现读写分离

Sharding-Jdbc实现读写分离 Hello,兄弟们好,我是Feri,最近整理了最新的基于Seata-Server2.0实现分布式事务的demo,希望对你有所帮助,有任何问题,可以随时沟通交流,在成为技术大牛的路上&#xf…

校园点餐系统

1 项目介绍 1.1 摘要 在这个被海量信息淹没的数字化时代,互联网技术以惊人的速度迭代,信息的触角无处不在,社会的脉动随之加速。每一天,我们都被汹涌而至的数据浪潮包裹,生活在一个全方位的数字信息矩阵中。互联网的…

vue3解析markdown文件为html并且高亮显示代码块

前言: 很多时候我们程序员写的文档都是以markdown为主,但是我们每次找相关资料极为不便,如果能直接把markdown文档引进vue项目里,解析成html并且展示出来,然后部署在服务器上,查看是不是极为方便呢。&…

3D打印随形透气钢:模具困气终结者

困气是模具经常遇到的问题,是制约生产效率与产品质量的关键因素之一。传统透气钢材料虽有所助益,但其在加工复杂度、形状适应性及性能均衡性上的局限性明显。在此背景下,3D打印技术的革新性应用——随形透气钢应运而生,为困气、排…

view 和 reshape的区别 及 测试对一个数据执行view 和 reshape之后得到的数据还一样吗

一、测试对一个数据执行view 和 reshape之后得到的数据还一样吗 问题: x torch.randn(2, 3, 4) y_view x.view(12, 2) y_reshape y_view.reshape(2,3, 4)得到的结果一样吗 import torch# 创建一个张量 x torch.randn(2, 3, 4)# 使用 …