canal本地搭建以及运行

具体的文档可参考官网文档:https://github.com/alibaba/canal/wiki

canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费

工作原理

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

环境准备:

1. 操作系统

    a.  纯java开发,windows/linux均可支持

    b.  jdk建议使用1.6.25以上的版本,稳定可靠

2. mysql要求

   a. 当前的canal开源版本支持5.7及以下的版本(阿里内部mysql 5.7.13, 5.6.10, mysql 5.5.18和5.1.40/48),ps. mysql4.x版本没有经过严格测试,理论上是可以兼容

   b. canal的原理是基于mysql binlog技术,所以这里一定需要开启mysql的binlog写入功能,并且配置binlog模式为row.

我们可以找到数据库配置文件my.cnf或者 my.ini文件,开启binlog写入功能,在Linux电脑下没有找到配置文件,可在/etc/my.cnf 在新增一个配置,mysql服务器会去扫描此文件。

在my.cnf文件下配置如下信息:

[mysqld]  
#开启binlog日志
log-bin=mysql-bin  
#选择row模式   
binlog-format=ROW 
#配置mysql replaction需要定义,不能和canal的slaveId重复
server_id=1  

配置好后进行服务重启进行生效,可以通过如下命令进行验证是否开启成功

show VARIABLES like 'log_bin';

显示‘ON’,表示开启成功

 c.  canal的原理是模拟自己为mysql slave,所以这里一定需要做为mysql slave的相关权限

#创建canal用户 密码canal
CREATE USER canal IDENTIFIED BY 'canal';    
# 对canal用户赋予权限
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';  
FLUSH PRIVILEGES; 
#进行验证,显示canal用户相关的权限
show GRANTS for canal;

 
 

开始搭建

从GitHub上下载源码到本地,可在tags中选择1.1.7版本

modules中deployer就是canal的服务端,结构如下:

修改example实例配置信息,配置成上述设置的canal用户:

#自己本地实例库信息
canal.instance.master.address=127.0.0.1:3308
#对应的自己的用户名和密码
canal.instance.dbUsername=canal
canal.instance.dbPassword=canal

进行启动:

window对应:bin/startup.bat.   linux对应:bin/startup.sh

在本地dubug启动的时候,可以直接运行CanalLauncher(启动类)

查看server日志:

logs/canal/canal.log

查看instance实例:

logs/example/example.log

如上服务端已启动成功,开始监听binlog日志

客户端验证:

我们刚开始通过最简单的tcp模式进行订阅变更,

可通过启动类运行也可运行命令,进行订阅数据变更,启动后,可以自行修改配置的instance中的数据,监听日志会进行打印

至此单机模式的canal服务端以及客户端验证已本地搭建完成,后续进行集群模式,和订阅推送的其他几种模式

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

湖仓架构的演进

1.数据仓库架构的历史演进 起初,业界数据处理首选方式是数仓架构。通常数据处理的流程是把一些业务数据库,通过ETL的方式加载到Data Warehouse中,再在前端接入一些报表或者BI的工具去展示。 数据仓库概念是 Inmon 于 1990 年提出并给出了完…

系统建模与分析

CPS系统 RTS实时系统 MDA模型驱动开发 MARTE语言的建模思想 RM/EDF调度机制 ROPES开发流程 UML UML介绍 用例图是从用户的角度描述系统的功能,不是从程序员的角度描述系统的功能。 对象图描述的也是静态结构。 SysML

MySQL-DCL

DCL是数据控制语言,用来管理数据库用户,控制数据库的访问权限。 管理用户:管理哪些用户可以访问哪些数据库 1.查询用户 USE mysql; SELECT * FROM user; 注意: MySQL中用户信息和用户的权限信息都是记录在mysql数据库的user表中的…

视频智能分析/云存储平台EasyCVR接入海康SDK,通道名称未自动更新该如何解决?

视频监控GB28181平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放,可同时播放多路视频流,也能…

快速、准确地检测和分类病毒序列分析工具 ViralCC的介绍和详细使用方法, 附带应用脚本

介绍 viralcc是一个基因组病毒分析工具,可以用于快速、准确地检测和分类病毒序列。 github:dyxstat/ViralCC: ViralCC: leveraging metagenomic proximity-ligation to retrieve complete viral genomes (github.com) Instruction of reproducing resul…

科锐16位汇编学习笔记01汇编基础和debug使用

为什么学习16位汇编? 16位操作指令最多能够操作两个字节,且更能够体现出与硬件的交互。16位下的指令和32位汇编的指令差不多。16位汇编的指令在32位一样使用.要学好汇编必须要了解一点点硬件知识,16汇编是直接操作硬件,32位汇编指令跟硬件隔离了 硬件运…

百度吉利合作造车生态,极越“智价比”能否带来科技平权?

文|AUTO芯球 作者|文泽 临近年关,车企迎来“降价潮”。为了获得更好的年终成绩单,包括上汽大众、比亚迪、长安汽车、智己汽车等20多家品牌推出了购车补贴、限时优惠等措施,优惠幅度最高近20万元。 在此背景下,新车发布一个多月…

C语言——指针

一、定义 指针也就是内存地址,指针变量是用来存放内存地址的变量。 将内存以一个字节分为一个个内存单元,每个内存单元都进行编号,这个编号就是地址,也就是指针。 int b 1;int *pb &b;//这里的pb变量是一个整型指针变量&a…

【漏洞复现】ActiveMQ反序列化漏洞(CVE-2015-5254)

Nx01 产品简介 Apache ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件。ActiveMQ是消息队列服务,是面向消息中间件(MOM)的最终实现,它为企业消息传递提供高可用、出色性能、可扩展、稳定和安全保障。 Nx02 漏洞描述 Re…

用于查询性能预测的计划结构深度神经网络模型--大数据计算基础大作业

用于查询性能预测的计划结构深度神经网络模型 论文阅读和复现 24.【X1.1】 在关系数据库查询优化领域,对查询时间的估计准确性直接决定了查询优化结果,进而影响到数据库整体的查询效率。但由于数据库自身的复杂性,查询时间受到数据分布、数据…

分类预测 | Python实现基于SVM-RFE-LSTM的特征选择算法结合LSTM神经网络的多输入单输出分类预测

分类预测 | Python实现基于SVM-RFE-LSTM的特征选择算法结合LSTM神经网络的多输入单输出分类预测 目录 分类预测 | Python实现基于SVM-RFE-LSTM的特征选择算法结合LSTM神经网络的多输入单输出分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 基于SVM-RFE-LSTM的特征…

【C++进阶04】STL中map、set、multimap、multiset的介绍及使用

一、关联式容器 vector/list/deque… 这些容器统称为序列式容器 因为其底层为线性序列的数据结构 里面存储的是元素本身 map/set… 这些容器统称为关联式容器 关联式容器也是用来存储数据的 与序列式容器不同的是 其里面存储的是<key, value>结构的键值对 在数据检索时…