linux 下载安装canal并运行示例_走在风口上的猪的博客-CSDN博客


本站和网页 https://blog.csdn.net/weixin_43970335/article/details/87912400 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

linux 下载安装canal并运行示例_走在风口上的猪的博客-CSDN博客
linux 下载安装canal并运行示例
走在风口上的猪
于 2019-02-25 10:41:52 发布
4827
收藏
文章标签:
linux
canal
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43970335/article/details/87912400
版权
最近自己配置了下canal监控mysql的示例,和大家分享一下。
首先需要linux安装有mysql数据库,具体操作就不做说明了,我们需要修改mysql的my.cnf配置文件,在里面加入下面三行配置,开启mysql的binlog并配置模式为row:
[mysqld]
log-bin=mysql-bin #添加这一行就ok
binlog-format=ROW #选择row模式
server_id=1 #配置mysql replaction需要定义,不能和canal的slaveId重复
接下来我们需要为mysql创建用户并赋予权限,进入mysql后分别执行下面三行代码:
CREATE USER canal IDENTIFIED BY 'canal'; --创建canal用户
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%'; --为canal用户赋予repication权限
FLUSH PRIVILEGES; --修改完毕立即生效。
接下来我们需要下载canal
1、下载文件:wget https://github.com/alibaba/canal/releases/download/canal-1.1.0/canal.deployer-1.1.0.tar.gz
2、创建文件夹:mkdir /usr/local/canal
3、解压文件:tar -zxvf canal.deployer-1.1.0.tar.gz -C /usr/local/canal/
解压完成之后我们需要修改配置文件,
首先修改conf目录下的canal.properties这个文件:
canal.id=1234 #此处为canal服务的id,id随便,但不能和instance.properties这个配置文件的服务id相同
canal.ip=192.168.0.254 #此处为服务器的id地址,不要配置成127.0.0.1
canal.port=11111 #此处为配置的canal端口号
canal.metrics.pull.port=11112
canal.zkServers=
# flush data to zk
canal.zookeeper.flush.period = 1000
# flush meta cursor/parse position to file
canal.file.data.dir = ${canal.conf.dir}
canal.file.flush.period = 1000
canal.withoutNetty = false
# tcp, kafka, rocketMQ
canal.serverMode = tcp
## memory store RingBuffer size, should be Math.pow(2,n)
canal.instance.memory.buffer.size = 16384
## memory store RingBuffer used memory unit size , default 1kb
canal.instance.memory.buffer.memunit = 1024
## meory store gets mode used MEMSIZE or ITEMSIZE
canal.instance.memory.batch.mode = MEMSIZE
## detecing config
canal.instance.detecting.enable =true
#canal.instance.detecting.sql = insert into retl.xdual values(1,now()) on duplicate key update x=now()
canal.instance.detecting.sql = select 1
canal.instance.detecting.interval.time = 3
canal.instance.detecting.retry.threshold = 3
canal.instance.detecting.heartbeatHaEnable = false
# support maximum transaction size, more than the size of the transaction will be cut into multiple transactions delivery
canal.instance.transaction.size = 1024
# mysql fallback connected to new master should fallback times
canal.instance.fallbackIntervalInSeconds = 60
修改example下的instance.properties配置文件:
################################################
## mysql serverId
canal.instance.mysql.slaveId =1 #此处是配置的canal伪装的mysql slaveid。不能和canal.properties中配置的canal服务id相同
# position info
canal.instance.master.address =127.0.0.1:3306 #此处配置自己需要监控的mysql的IP地址和端口号
canal.instance.master.journal.name =
canal.instance.master.position =
canal.instance.master.timestamp =
#canal.instance.standby.address =
#canal.instance.standby.journal.name =
#canal.instance.standby.position =
#canal.instance.standby.timestamp =
#canal.instance.tsdb.enable=true
#canal.instance.detecting.interval.time=3
#canal.instance.tsdb.dir=${canal.file.data.dir:../conf}/${canal.instance.destination:}
#canal.instance.tsdb.url=jdbc:h2:${canal.instance.tsdb.dir}/h2;CACHE_SIZE=1000;MODE=MYSQL;
#canal.instance.tsdb.dbUsername=canal
#canal.instance.tsdb.dbPassword=123
#canal.instance.enableDruid=false
# username/password
canal.instance.dbUsername = canal #此处是我们为mysql配置的canal用户
canal.instance.dbPassword = 123 #此处是我们为mysql配置的canal用户的密码
canal.instance.defaultDatabaseName =test #此处配置我们需要监控的mysql的数据库,如不填写则监控全部数据库
canal.instance.connectionCharset = UTF-8 #此处配置canal的编码
# table regex
canal.instance.filter.regex =test\\..* #此处是监控的mysql数据库,如监控全部数据库可配置为 .*\\..*
# table black regex
canal.instance.filter.black.regex =
配置完上述信息之后可启动canal 并查看输出日志检查是否启动成功。
如报错检查修改的配置文件是否正确。具体报错下篇文章再进行详细说明并解决。
canal启动成功之后就可配置canal的客户端
需要在pom.xml中添加canal的jar包
<dependency>
<groupId>com.alibaba.otter</groupId>
<artifactId>canal.client</artifactId>
<version>1.0.12</version>
</dependency>
更新依赖 mvn install
最后是CanalClient.java类代码
package com.carinet.bitfinance.util;
import java.net.InetSocketAddress;
import java.util.List;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.otter.canal.client.CanalConnector;
import com.alibaba.otter.canal.protocol.Message;
import com.alibaba.otter.canal.protocol.CanalEntry.Column;
import com.alibaba.otter.canal.protocol.CanalEntry.Entry;
import com.alibaba.otter.canal.protocol.CanalEntry.EntryType;
import com.alibaba.otter.canal.protocol.CanalEntry.EventType;
import com.alibaba.otter.canal.protocol.CanalEntry.RowChange;
import com.alibaba.otter.canal.protocol.CanalEntry.RowData;
import com.alibaba.otter.canal.client.*;
/**
* @ClassName CanalClient
* @Description TODO
* @Author duyuanyuan
* @Date 2019/2/2115:30
* @Version 1.0
**/
public class CanalClient {
public static void main(String args[]) {
// 创建链接 instanceA
CanalConnector connector = CanalConnectors.newSingleConnector(new InetSocketAddress("192.168.0.234",
11111), "example", "", "");
int batchSize = 1000;
int emptyCount = 0;
try {
connector.connect();
connector.subscribe(".*\\..*");
connector.rollback();
int totalEntryCount = 1200;
while (emptyCount < totalEntryCount) {
Message message = connector.getWithoutAck(batchSize); // 获取指定数量的数据
long batchId = message.getId();
int size = message.getEntries().size();
if (batchId == -1 || size == 0) {
emptyCount++;
System.out.println("empty count : " + emptyCount);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
} else {
emptyCount = 0;
printEntry(message.getEntries());
connector.ack(batchId); // 提交确认
System.out.println("empty too many times, exit");
}catch (Exception e){
//connector.rollback(batchId); // 处理失败, 回滚数据
finally {
connector.disconnect();
private static void printEntry( List<Entry> entrys) {
for (Entry entry : entrys) {
if (entry.getEntryType() == EntryType.TRANSACTIONBEGIN || entry.getEntryType() == EntryType.TRANSACTIONEND) {
continue;
RowChange rowChage = null;
try {
rowChage = RowChange.parseFrom(entry.getStoreValue());
} catch (Exception e) {
throw new RuntimeException("ERROR ## parser of eromanga-event has an error , data:" + entry.toString(), e);
EventType eventType = rowChage.getEventType();
System.out.println(String.format("================> binlog[%s:%s] , name[%s,%s] , eventType : %s",
entry.getHeader().getLogfileName(), entry.getHeader().getLogfileOffset(),
entry.getHeader().getSchemaName(), entry.getHeader().getTableName(),
eventType));
for (RowData rowData : rowChage.getRowDatasList()) {
if (eventType == EventType.DELETE) {
printColumn(rowData.getBeforeColumnsList());
//此处可以将监控到的rowData.getAfterColumnsList()集合数据更新或者同步到redis或者es中
} else if (eventType == EventType.INSERT) {
printColumn(rowData.getAfterColumnsList());
//此处可以将监控到的rowData.getAfterColumnsList()集合数据更新或者同步到redis或者es中
} else {
System.out.println("-------> before");
printColumn(rowData.getBeforeColumnsList());
System.out.println("-------> after");
printColumn(rowData.getAfterColumnsList());
//此处可以将监控到的rowData.getAfterColumnsList()集合数据更新或者同步到redis或者es中
private static void printColumn( List<Column> columns) {
for (Column column : columns) {
System.out.println(column.getName() + " : " + column.getValue() + " update=" + column.getUpdated());
走在风口上的猪
关注
关注
点赞
收藏
打赏
评论
linux 下载安装canal并运行示例
最近自己配置了下canal监控mysql的示例,和大家分享一下。首先需要linux安装有mysql数据库,具体操作就不做说明了,我们需要修改mysql的my.cnf配置文件,在里面加入下面三行配置,开启mysql的binlog并配置模式为row:[mysqld]log-bin=mysql-bin #添加这一行就okbinlog-format=ROW #选择row模式server_...
复制链接
扫一扫
阿里Canal从入门到实战
07-09
本课程基于阿里巴巴 MySQL binlog 增量订阅&消费组件,对Canal进行全面系统的讲解。课程先介绍Canal在电商运行项目中的架构设计与解决方案,然后详细讲解Canal架构原理以及Canal HA工作机制,最后通过Canal单节点Server,Canal HA集群,Canal集成Kafka三个案例进行实操,从而快速、深入掌握阿里Canal技术,实现数据实时增量采集.<br />
canal HA安装配置(Linux)
qq_55906442的博客
04-19
2410
介绍:
Canal 是用 java 开发的基于数据库增量日志解析,提供增量数据订阅&消费的中间件。
目前,Canal 主要支持了 MySQL 的 Binlog 解析,解析完成后才利用 Canal Client 来处理
获得的相关数据。(数据库同步需要阿里的 Otter 中间件,基于 Canal)。
常见场景:
常见场景1:更新缓存
常见场景2:抓取业务数据新增变化表,用于制作拉链表。
常见场景3:抓取业务表的新增变化数据,用于制作实时统计
一、安装准备
...
参与评论
您还未登录,请先
登录
后发表或查看评论
【Linux+SQL】关于阿里canal的问题总结
Robin_hc的博客
05-27
5989
@hucong
目录导航
canal问题总结
重置canal中binlog信息
在Linux上运行canal-receiver客户端
canal配置
canal问题排查
canal问题总结
重置canal中binlog信息
通常在查看canal.log时,提示一堆错误,如reset by peer之类的多半是canal中记录的binlog位置与MySQL中实际记录的binlog位...
canal 安装及入门教程
最新发布
做一个有思想的技术人
11-08
62
canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费,目前主要支持了mysql。
Canal安装和配置,实现监听binlog日志
qq_45932382的博客
09-26
633
canal监听binlog日志
Canal安装部署详细步骤
Kingsley's Blog
04-29
3862
canal安装部署
Canal-从零开始,一步一步教你,包教包会
hualingkai11的博客
07-24
386
简介
canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费
早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。
基于日志增量订阅和消费的业务包括
数据库镜像
数据库实时备份
索引构建和实时维护(拆分异构索引、倒排索引等)
linux系统下安装并配置canal
03-16
3638
canal官网下载地址:https://github.com/alibaba/canal
下载canal的压缩包 :canal下载
自己选择一个版本下载(ps:选择deployer的版本)
首先连接到linux,切换至root用户
使用canal要先开启mysql的Binlog写入功能,配置 binlog-format 为ROW模式,故须使用如下命令修改mysql的my.cnf中配置
vi /etc/my.cnf
在my.cnf配置中加入以下配置
log-bin=mysql-...
Linux安装canal实现增量数据同步
weixin_45865428的博客
11-11
3064
前言:本文章将采用docker方式安装canal
canal主要用途是基于 MySQL 数据库增量日志解析,并能提供增量数据订阅和消费。
github地址:https://github.com/alibaba/canal
版本下载地址:https://github.com/alibaba/canal/releases
文档地址:https://github.com/alibaba/canal/wiki/Docker-QuickStart
Canal应用场景
1.电商场景下商品、用户实时更新同步到至Ela
使用linux安装及配置canal
不知名博客
03-09
589
文章目录安装与解压配置数据库配置canal配置
安装与解压
下载地址:https://github.com/alibaba/canal/releases/tag/canal-1.1.4
将压缩包放入linux的/usr/local/soft 文件夹中
解压到指定文件夹
mkdir /tmp/canal
tar zxvf canal.deployer-1.1.4.tar.gz -C /tmp/canal
解压完成后,进入 /tmp/canal 目录,可以看到如下结构
配置
数据库配置
对于
使用canal通过mysql的binlog日志对mysql进行监控(同步服务)
一个有趣、有料、有内涵的地方!
09-27
772
一、环境介绍
canal是阿里开源的中间件,主要用于同步mysql数据库变更。具体参见:https://github.com/alibaba/canal/relea...
canal系列—Linux下的安装配置(快速开始)
此博客已停用,博文会逐渐转移到新地址,http://blog.csdn.net/liupeifeng3514
12-12
6225
零、环境准备1、canal的原理是基于mysql binlog技术,所以这里一定需要开启mysql的binlog写入功能,建议配置binlog模式为row[mysqld]
log-bin=mysql-bin #添加这一行就ok
binlog-format=ROW #选择row模式
server_id=129 #配置mysql replaction需要定义,不能和canal的slaveId重复2、ca
canal下载 linux_linux下安装canal
weixin_39692557的博客
12-21
394
一、准备1、下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html2、创建文件夹:mkdir /usr/local/java3、解压文件:tar -zxvf jdk-8u181-linux-x64.tar.gz -C /usr/local/java/4、修改环境变量:vim ...
canal下载 linux_Canal入门
weixin_32147929的博客
12-30
398
配置mysql1、mysql开启binlogmysql默认没有开启binlog,修改mysql的my.cnf文件,添加如下配置,注意binlog-format必须为row,因为binlog如果为STATEMENT或者MIXED,则binlog中记录的是sql语句,不是具体的数据行,canal就无法解析到具体的数据变更了。log-bin=E:/mysql5.5/bin_log/mysql-bin.l...
canal 入门分享
03-27
对一次学习阿里巴巴mysql数据库binlog的增量订阅&消费组件 的朋友了解入门这个技术
linux下安装canal
weixin_30950607的博客
09-18
602
一、准备
1、下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
2、创建文件夹:mkdir /usr/local/java
3、解压文件:tar -zxvf jdk-8u181-linux-x64.tar.gz -C /usr/local/java/
4、修改环...
canal.adapter-Linux-1.1.4.zip
04-16
canal 同步插件 1
canal1.1.4的下载及安装
qq_44665283的博客
12-22
2565
canal1.1.4的安装
一、找到 MySQL 配置文件的位置
➢ Linux: /etc/my.cnf
如果/etc 目录下没有,可以通过 locate my.cnf 查找位置
➢ Windows: \my.ini
➢ 在 mysql 的配置文件下,修改配置
在[mysqld] 区块
log-bin=mysql-bin #添加这一行就ok
binlog-format=ROW #选择row模式
server_id=1 #配置mysql replaction需要定义,不能和canal的slaveId重复
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
走在风口上的猪
CSDN认证博客专家
CSDN认证企业博客
码龄4年
暂无认证
原创
23万+
周排名
188万+
总排名
1万+
访问
等级
266
积分
粉丝
获赞
评论
19
收藏
私信
关注
热门文章
linux 下载安装canal并运行示例
4826
idea2018.3 无需注册码破解,完美使用100年
3615
svn提交更新提示锁定
1675
nginx配置https及http访问,解决不同SessionId问题
1267
springboot+hibernate(jpa)配置多数据源
920
最新评论
svn提交更新提示锁定
Cdf(人名):
真不错,期待大佬回访!
svn提交更新提示锁定
普通网友:
好文,鉴定完毕!可以抽空回访(评论+点赞)一下我吗?
svn提交更新提示锁定
普通网友:
写的不错 共勉~,最近也在开始写博客。大佬们来翻牌啊!
svn提交更新提示锁定
普通网友:
同样是程序员,为何你能如此秀!
list排序 抛出java.lang.UnsupportedOperationException null异常
ctotalk:
收了
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
list排序 抛出java.lang.UnsupportedOperationException null异常
nginx配置https及http访问,解决不同SessionId问题
idea2018.3 无需注册码破解,完美使用100年
2020年1篇
2019年8篇
目录
目录
最新文章
list排序 抛出java.lang.UnsupportedOperationException null异常
nginx配置https及http访问,解决不同SessionId问题
idea2018.3 无需注册码破解,完美使用100年
2020年1篇
2019年8篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
走在风口上的猪
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值