Canal

        canal译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。

1.canal 工作原理

  • canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议
  • MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )
  • canal 解析 binary log 对象(原始为 byte 流)

2.安装/配置MySQL

1.安装mysql

        已安装略过此步骤,未安装,可以参考linux 安装MySQL-CSDN博客进行安装。

2.开启binlog日志

vi /etc/my.cnf

[mysqld]
log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 行 模式
#binlog-do-db 根据自己的情况进行修改,指定具体要同步的数据库,如果不配置
则表示所有数据库均开启 Binlog
#binlog-do-db=demo
#binlog-do-db=dmp

注意:需要重启MySQL实例使配置生效,执行命令:sudo systemctl restart mysqld

3.新建canal账号并授权

create user canal@'%' identified with mysql_native_password by 'wsx-123';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
FLUSH PRIVILEGES;

4.查看binlog日志

1)查看binlog模式:show variables like '%binlog_format%';
 
2)查看binlog日志文件列表:show binary logs;


3)查看当前正在写入的binlog文件: show master status;

 3.安装Canal

3.1下载 canal

wget https://github.com/alibaba/canal/releases/download/canal-1.1.6/canal.adapter-1.1.6.tar.gz

3.2 解压canal

mkdir ~/opt/canal

tar -zxf canal.deployer-1.1.6.tar.gz  -C ~/opt/canal

3.3  修改canal 的基本通用配置

vi conf/canal.properties

#canal常用端口
canal.admin.port = 11110
canal.port = 11111
canal.metrics.pull.port = 11112

# 输出 model,默认 tcp,改为输出到: kafka, rocketMQ, rabbitMQ, pulsarMQ
canal.serverMode = tcp

# 指定实例,多个实例使用逗号分隔: canal.destinations = example1,example2
#如果需要多个实例处理不同的MySQL数据的话,直接拷贝出多个conf/example,并对其重新命名,命名和配置文件中指定的名称一致即可
canal.destinations = example

3.4 修改canal 实例配置

vi conf/example/instance.properties

## mysql serverId , v1.0.26+ will autoGen
# canal.instance.mysql.slaveId=0

# mysql数据库地址:ip+端口
canal.instance.master.address=127.0.0.1:3306 
 
# mysql数据库用户名和密码 
canal.instance.dbUsername=canal 
canal.instance.dbPassword=wsx-123


#代表数据库的编码方式对应到 java 中的编码类型,比如 UTF-8,GBK , ISO-8859-1
canal.instance.connectionCharset = UTF-8
 
# 指定库和表,这里的 .* 表示 canal.instance.master.address 下面的所有数据库
canal.instance.filter.regex=.*\\..*

#指定具体数据库和该库所有表
#canal.instance.defaultDatabaseName=demo
#table regex
#canal.instance.filter.regex = demo\\..*

3.5 启动canal

sh bin/startup.sh

        首次运行成功之后,会在实例目录下生成meta.dat元数据文件,里面包含有mysql的连接信息、binlog文件及position位点信息。

vi conf/example/meta.dat

3.6 验证启动成功

tail -f logs/example/example.log

4.实时监控

4.1 canal 客户端

        canal 特别设计了 client-server 模式,交互协议使用 protobuf 3.0 , client 端可采用不同语言实现不同的消费逻辑。

        canal java 客户端: ClientExample · alibaba/canal Wiki · GitHub

4.2 MQ客户端

        canal 作为 MySQL binlog 增量获取和解析工具,可将变更记录投递到 MQ 系统中,比如 Kafka/RocketMQ。

        参考文档: Canal Kafka/RocketMQ QuickStart

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mac 安装 selenium + chrome driver

前言 使用 selenium 模拟浏览器渲染数据,需要依赖各浏览器的驱动才能完成,因此需要单独安装chrome driver 查看本地 chrome 浏览器的版本 可以看到我这里已经是 arm 架构下最新的版本了 下载对应的 chrome driver 访问下面的地址: Chrome…

Redis7--基础篇2(Redis的十大数据类型及常用命令)

1. Redis的十大数据类型及常用命令 Redis是key-value键值对类型的数据库,我们所说的数据类型指的是value的数据类型,key的数据类型都是字符串。 1.1 字符串(String) string是redis最基本的类型,一个key对应一个val…

easyscholar配置秘钥连接Zotero-style,更方便的了解文献!

如果你不知道什么是easyScholar,以及怎么安装easyScholar? 请参见文章 easyScholar 一、easyscholar配置秘钥 1.首先打开easyscholar插件,并登录 2.点击自定义数据集 3.依次点击 用户信息-开放接口 4.点击刷新 5.在Zoter中 编辑-首选项-高级-编辑器 6.点击…

[C]环境(0/0)→ 环境配置

这里写目录标题 0x00 额环境下载解压 0x00 额 写了那么多C的入门,就是没写C语言的环境配置,乘此机会写了吧。 环境下载 直接在我这下载就好了,毕竟用了挺久没啥问题的 C语言环境(gcc version 8.1.0) 解压 最后得到…

快速构建高质量中文APP登录注册页面Figma源文件

在这个数字化时代,移动应用程序(APP)已经成为我们日常生活中不可或缺的一部分。如果您正在为您的中文APP开发登录注册页面,并寻找高质量的UI设计素材,那么您来对地方了!我们为您提供了一个完整的Figma源文件…

解答开发转软件测试岗的困惑

有个知乎网友做了一年的软件开发,打算转软件测试,但是面试了几家都没有回音,希望大家能给一点建议。 由于这个问题不是今年提的,所以不用担心知友是受到了疫情的影响,单纯应该是个人的问题。 因为他只做了一年开发就想…

Redis 扩展 RedisBloom 插件,解决缓存击穿、穿透

文章目录 一、概述二、编译准备2.1 升级 make2.2 安装 Python3 三、编译 RedisBloom四、测试 RedisBloom五、应用场景5.1 缓存击穿5.2 缓存穿透5.3 原理总结 六、存在的问题 如果您对Redis的了解不够深入请关注本栏目,本栏目包括Redis安装,Redis配置文件…

【tgcalls】Instance接口的实例类的创建

tg 里有多个版本,因此设计了版本管理的map,每次可以选择一个版本进行实例创建这样,每个客户端就可以定制开发了。tg使用了c++20创建是要传递一个描述者,里面是上下文信息 G:\CDN\P2P-DEV\tdesktop-offical\Telegram\ThirdParty\tgcalls\tgcalls\Instance.cpp可以看到竟然是…

js获取地址中携带的省市区

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。 match() 方法将检索字符串 String Object,以找到一个或多个与 regexp 匹配的文本。这个方法的行为在很大程度上有赖于 regexp 是否具有标志 g。如果 regexp 没有标志 g&#x…

带有滑动菜单指示器的纯 CSS 导航选项卡

效果展示 CSS 知识点 filter 属性回顾 transition 属性回顾 使用单选框实现导航菜单的思路 单选框当点击完成后就会有一个:checked属性&#xff0c;可以利用这个属性来实现导航菜单底部滑动块的滑动动画和当前菜单项激活状态的管理。 整体页面结构 <div class"tab…

ZZ308 物联网应用与服务赛题第F套

2023年全国职业院校技能大赛 中职组 物联网应用与服务 任 务 书 &#xff08;F卷&#xff09; 赛位号&#xff1a;______________ 竞赛须知 一、注意事项 1.检查硬件设备、电脑设备是否正常。检查竞赛所需的各项设备、软件和竞赛材料等&#xff1b; 2.竞赛任务中所使用…

【Royalty in Wind 2.0.0】个人体测计算、资料分享小程序

前言 Royalty in Wind 是我个人制作的一个工具类小程序。主要涵盖体测计算器、个人学习资料分享等功能。这个小程序在2022年第一次发布&#xff0c;不过后来因为一些原因暂时搁置。现在准备作为我个人的小程序重新投入使用XD PS&#xff1a;小程序开发部分我是在21年跟随郄培…

配置Linux为无线路由器

配置Linux无线路由器 将Linux配置为无线路由器。使用hostapd&#xff0c;可以配置无线网卡为AP模式。 这里使用buildroot来生成这个工具。Wi-Fi模块使用的是 rt8188eus。 1. 内核配置 2. buildroot配置 开启 rt8188eus 驱动 3. 启动hostapd 系统启动后&#xff0c;会自动加…

innovus:set_ccopt_property基本用法备忘录(中)

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 insertion_delay insertion delay的作用是指导clock tree做长或做短。具体可以看以下文章:innovus set_ccopt_property insertion_delay insertion_delay的设置的来源有三个…

detectron2环境搭建及自定义coco数据集(voc转coco)训练

detectron2建议ubuntu进行环境搭建&#xff0c;Windows大概率报错 一 环境搭建 创建虚拟环境 conda create -n detectron2 python3.8 -y conda activate detectron2后面下载源代码建议存到git中再git clone git clone https://github.com/facebookresearch/detectron2.git …

Linux搭建我的世界MC服务器 【Minecraft外网联机教程】

文章目录 前言1. 安装JAVA2. MCSManager安装3.局域网访问MCSM4.创建我的世界服务器5.局域网联机测试6.安装cpolar内网穿透7. 配置公网访问地址8.远程联机测试9. 配置固定远程联机端口地址9.1 保留一个固定tcp地址9.2 配置固定公网TCP地址9.3 使用固定公网地址远程联机 前言 Li…

蓝桥杯国一,非ACMer选手保姆级经验分享

目录 一、前言二、蓝桥杯简介三、0基础计算机新手小白&#xff0c;赛前如何准备提高自己的获奖率&#xff1f;3.1 每两周参加一次【蓝桥算法双周赛】3.2 多练真题3.3 参加每一场官方校内模拟赛 四、结语 一、前言 hello&#xff0c;大家好&#xff0c;我是大赛哥(弟)&#xff…

竞赛 目标检测-行人车辆检测流量计数

文章目录 前言1\. 目标检测概况1.1 什么是目标检测&#xff1f;1.2 发展阶段 2\. 行人检测2.1 行人检测简介2.2 行人检测技术难点2.3 行人检测实现效果2.4 关键代码-训练过程 最后 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 行人车辆目标检测计数系统 …

html实现竖直步骤条

1、问题描述 最近碰到一个需求&#xff0c;要把审批流程改为竖直步骤条的形式。本来想直接抄网上的&#xff0c;但是网上给的要么是水平步骤条&#xff0c;要么是集成在框架里的&#xff0c;要么就是人家写的太复杂了&#xff0c;js&#xff0c;css一大堆。 2、我的代码 代码下…

技术分享 | app自动化测试(Android)-- 特殊控件 Toast 识别

Toast 是 Android 系统中的一种消息框类型&#xff0c;它属于一种轻量级的消息提示&#xff0c;常常以小弹框的形式出现&#xff0c;一般出现 1 到 2 秒会自动消失&#xff0c;可以出现在屏幕上中下任意位置。它不同于 Dialog&#xff0c;它没有焦点。Toast 的设计思想是尽可能…