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服务端以及客户端验证已本地搭建完成,后续进行集群模式,和订阅推送的其他几种模式

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

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

相关文章

01-线程池项目背景:C++的数据库操作

从0开始学习C与数据库的联动 1.原始方式-使用MySQL Connector/C 提供的API查询 1.1 数据库预操作 我的本地电脑上有mysql数据库,里面预先创建了一个database名叫chat,用户名root,密码password。 1.2 Visual Studio预操作 在Windows上使用…

vue3中使用echarts:tooltip的trigger为axis tooltip不显示问题

vue3中使用echarts时,tooltip的trigger设置为axis时formatter不触发 tooltip: {trigger: "axis",formatter: function (params) {console.log("params", params);},axisPointer: {type: "shadow", // 阴影指示器}, },解决办法&#…

10分钟设置免费海外远程桌面使用Amazon Lightsail服务的免费套餐轻松搭建远程桌面

本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 亚马逊云科技开发者社区, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道。 目录 前言 使用教程 启动 Amazon Lightsail 实例 配置远程桌面 启动远程桌面 使…

圆通速递单号查询入口,筛选出指定某天签收的单号

随着电商和物流行业的飞速发展,快递单号的管理也成了一个让人头疼的问题。如何快速筛选、整理这些快递单号,成为了提高生活和工作效率的关键。而【快递批量查询高手】的出现,正好可以巧妙的解决上面的问题,下面就来具体看看这款软…

Docker一键极速安装Nacos,并配置数据库!

1 部署方式 1.1 DockerHub javaedgeJavaEdgedeMac-mini ~ % docker run --name nacos \ -e MODEstandalone \ -e JVM_XMS128m \ -e JVM_XMX128m \ -e JVM_XMN64m \ -e JVM_MS64m \ -e JVM_MMS64m \ -p 8848:8848 \ -d nacos/nacos-server:v2.2.3 a624c64a1a25ad2d15908a67316d…

【洛谷千题详解】P5706 【深基2.例8】再分肥宅水

只需要用t/n即可。 AC代码&#xff1a; #include<bits/stdc.h> using namespace std; int main() {float a;int b;cin>>a>>b;double ca/b;printf("%.3f\n",c);cout<<b*2<<endl;return 0; }

VuePress部署到GitHub Pages

一、git push自动部署 1、创建用于工作流的文件 在项目根目录下创建一个用于 GitHub Actions 的工作流 .yml 文件 name: docson:# 每当 push 到 main 分支时触发部署push:branches: [main]# 手动触发部署workflow_dispatch:jobs:docs:runs-on: ubuntu-lateststeps:- uses: a…

问题 E: 便利店

题目描述 天宝来到便利店想买些饮料。便利店有各种型号的瓶装饮料售卖&#xff0c;不同型号的饮料卖不同的价格。1瓶0.25升的卖A元&#xff0c;1瓶0.5升的饮料卖B元&#xff0c;1瓶1升的卖C元&#xff0c;1瓶2升的卖D元。便利店里每种饮料都是无限供应。 天宝要买N升的饮料&a…

逻辑斯蒂回归

逻辑斯蒂回归简介 逻辑斯蒂回归&#xff08;Logistic Regression&#xff09;是一个非常经典的算法&#xff0c;虽然被称为回归&#xff0c;但其实际上是分类模型&#xff0c;并常用于二分类。因为通过逻辑回归模型&#xff0c;我们得到的计算结果是0-1之间的连续数字&#xff…

FreeRTOS 实时操作系统第九讲 - 链表 (数据结构)

一、链表简述 链表是一种物理存储单元上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列节点&#xff08;链表中每一个元素称为节点&#xff09;组成&#xff0c;节点可以在运行时动态生成。每个节点包括两个部分&…

虾皮、Lazada店铺流量怎么提升?自养号优势及测评系统如何搭建?

虾皮、Lazada是东南亚地区最大的购物平台之一&#xff0c;吸引了大量的买家和卖家。在竞争激烈的虾皮市场上&#xff0c;如何提升店铺的流量成为许多卖家关注的问题。以下是关于如何提升虾皮、Lazada店铺流量的一些建议。 一、店铺流量怎么提升? 首先&#xff0c;进行优质的…

C#编程-使用集合

使用集合 您学习了如何使用数组来有效地存储和操作相似类型额数据。但是,以下限制于数组的使用相关联: 您必须在声明时定义数组的大小。您必须编写代码以对数组执行标准操作,如排序。让我们思考一个示例。假设您想要存储在组织工作的五个雇员的姓名。您可以使用以下语句来声…

java基于ssm的线上选课系统的设计与实现论文

摘 要 在如今社会上&#xff0c;关于信息上面的处理&#xff0c;没有任何一个企业或者个人会忽视&#xff0c;如何让信息急速传递&#xff0c;并且归档储存查询&#xff0c;采用之前的纸张记录模式已经不符合当前使用要求了。所以&#xff0c;对学生选课信息管理的提升&#x…

无人直播源码/技术源头开发/直播贴片技术源头

无人直播源码/技术源头开发/直播贴片&#xff0c;无人直播&#xff0c;无人实景直播。动态切片功能&#xff0c;自动回复功能&#xff0c;压低打断主播音&#xff0c;支持短视频各大主流平台开播。 搭建无人直播源码需要以下步骤&#xff1a; 1. 确定直播平台和工具&#xff1…

基于孔雀优化算法的航线规划

MATLAB2020a下正常运行 上传明细-CSDN创作中心

XSKY SDS 产品率先获得 OceanBase V4 新版本认证

近日&#xff0c;北京奥星贝斯科技有限公司&#xff08;简称&#xff1a;OceanBase&#xff09;与北京星辰天合科技股份有限公司&#xff08;简称&#xff1a;XSKY 星辰天合&#xff09;顺利完成产品兼容性认证。 XSKY 的高性能全闪存储以及混闪存储&#xff0c;与 OceanBase V…

大数据平台Bug Bash大扫除最佳实践

一、背景 随着越来越多的"新人"在日常工作以及大促备战中担当大任&#xff0c;我们发现仅了解自身系统业务已不能满足日常系统开发运维需求。为此&#xff0c;大数据平台部门组织了一次Bug Bash活动&#xff0c;既能提升自己对兄弟产品的理解和使用&#xff0c;又能…

【IPC通信--信号】

信号处理函数 • 信号发送函数 – kill(), sigqueue(), raise(), alarm(), setitimer(), pause() &#xff0c; abort() • 信号安装函数 – signal(), sigaction() • 信号集操作函数 – sigemptyset(), sigfillset(), sigaddset(), sigdelset(), sigismember() 信号发送函数—…

xgboost对密西西比数据集csv文件进行预测

代码&#xff1a; # 导入需要的库 from sklearn.preprocessing import LabelEncoder import matplotlib.pyplot as plt import pandas as pd import xgboost as xgb from sklearn.model_selection import train_test_split from sklearn.metrics import confusion_matrix, cla…

自定义事件总线

文章目录 什么是自定义事件总线具体实现思路分析定义结构实现 on实现 emit实现 off 源码 什么是自定义事件总线 自定义事件总线属于一种观察着模式&#xff0c;其中包括三个角色发布者&#xff08;Publisher&#xff09;&#xff1a;发出事件&#xff08;Event&#xff09;订阅…