canal的概念这里我就不多说了,以下附上git链接查看:https://github.com/alibaba/canal

随笔记录一下我遇到的问题与修改,这里主要讲如何正确的配置:

首先,去官网下载相关jar包与源码包,这里我使用的是1.1.4版本:

https://github.com/alibaba/canal/releases/tag/canal-1.1.4

image.png

上面是功能介绍,拉至最下面就能看到所需的tar包以及源码包,大家可以下载所需要的

image.png

在这里,我下载了canal.adapter和SourceCode

canal.adapter用于部署linux环境上

SourceCode用于本地调试代码和自定义新增的配置文件

源码的目录结构为:

image.png

common:通用基础包

elasticsearch:对应es数据库落地处理器

hbase:对应hbase数据库落地处理器

logger:对应日志方式落地处理器

rdb:对应rdb方式落地处理器

launcher:主要逻辑代码,使用哪个具体的处理器就依赖哪个jar包

在工作中,我使用了ES数据库落地的方式同步数据:

以下三个文件是需要增加、修改的文件,es文件下可以配置多个

image.png

1.修改application.yml配置

canalAdapters可以配置多个adapter,在这里配置了es和logger,logger用于打印日志,方便查看日志信息

一个instance可以配置多个组和实例,处理器的key是唯一标识

image.png

2.需要在launcher项目resource/es文件夹下创建需要同步的表配置文件

image.png

上述基础的配置就配置完成了

下面是代码修改,由于我使用的是ES7.6.1版本,所以client-adapter-elasticsearch处理器需要修改一些代码:

源代码:

com.alibaba.otter.canal.client.adapter.es.support.ESConnection

getMapping方法:

image.png

将158行代码修改为:

mappingMetaData = (MappingMetaData)((ImmutableOpenMap)mappings.get(index)).get("properties");

修改之后才能获得es索引库的配置信息,我们在application.yml配置文件中es的连接模式为rest,只需修改158行的代码即可

com.alibaba.otter.canal.client.adapter.es.support.ESSyncUtil

项目中本身是支持group by语法的,但是实例配置文件sql语句中是若使用where条件查询是不支持group by的,mysql会报一个语法错误,我们需要新增一个sql拼接的重载方法

image.png

需要在com.alibaba.otter.canal.client.adapter.es.service.ESSyncService

修改mainTableInsert和mainTableUpdate方法:

image.png

image.png

修改之后,打包编译,启动launcher项目测试同步是否成功。

测试成功后可以部署到生产环境,

注意:plugin文件夹下要替换es依赖包

image.png

然后启动,就可以将mysql数据库的数据同步到es库了~

后续有时间再附上源码分析

canal下载 linux_阿里canal数据库同步ES使用相关推荐

  1. 阿里mysql数据库同步_如何对MySQL数据库中的数据进行实时同步-阿里云开发者社区...

    数据传输(Data Transmission) 支持以数据库为核心的结构化存储产品之间的数据传输. 它是一种集数据迁移.数据订阅及数据实时同步于一体的数据传输服务.数据传输致力于在公有云.混合云场景下 ...

  2. 下载安装使用Canal

    下载安装使用Canal 下载安装使用Canal 下载 数据库配置 解压Canal 以Springboot项目简单使用canal 下载安装使用Canal 下载 下载地址:https://github.c ...

  3. canal mysql重置_canal: 首先装完阿里的canal,然后数据库同步,仅供学习参考

    背景 需要将数据库增量内容同步到另外的数据库,两者保持一致.包含增删改,数据库创建.删除,数据库名称修改,内容清空,表结构修改,索引创建.修改.删除. 方案 采用阿里巴巴Canal,用于监听mysql ...

  4. canal实现mysql数据实时同步es

    前言 canal是阿里开源的一款用于同步mysql数据到其他数据存储的中间件,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 在搭建mysql服务器主从同步的时候,我们知道,备 ...

  5. 阿里开源数据同步组件Canal

    一.简介 canal是阿里开源的数据同步组件 这个是是git地址 二.使用步骤 1.安装配置mysql 安装一个数据库(这个数据库是被监听的对象,我这里用的是mysql5.7) 创建一个用户专门用于数 ...

  6. mysql 集群 运维_【MySQL运维】Canal集群模式与多数据库同步部署

    一.Canal工作原理 Canal基于数据库的增量日志进行解析,然后提供增量数据的订阅和消费.Canal会将自己伪装成MySQL的 Slave去向主库进行同步请求,然后将获取到的binlog解析成特定 ...

  7. canal下载 linux_canal实时同步mysql数据到redis或ElasticSearch

    一.Canal架包下载上传 (一)下载 官网架包地址为:https://github.com/alibaba/canal/releases/tag/canal-1.1.5-alpha-2 本人百度云盘 ...

  8. 教你如何用阿里canal

    什么是canal? 阿里巴巴 B2B 公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了同步杭州和美国异地机房的需求,从 2010 年开始,阿里系公司开始逐步的尝试基于数据库的 ...

  9. mysql数据实时同步:Canal安装部署、kafka安装、zk安装、mysql安装、Canal Server+Canal Client HA,Canal+mysql+Kafka,相关验证(学习笔记)

    目录 Canal安装部署 1.1. 服务器准备 1.2. 设置主机名并配置hosts 1.3. 免密设置 1.4. 设置ntp时间 1.5. 关闭防火墙 1.6. 关闭selinux 1.7. 安装J ...

最新文章

  1. 寻找长沙“科技之星”,CSDN星城大巡礼
  2. js实现元素水平垂直居中
  3. 好好学python · 字符串(find(),index(),split(),join(),strip(),replace())
  4. printwriter 要close吗_中国股市:市盈率低估,就意味着可以买入吗?不懂你就输了...
  5. android照片备份软件下载,照片备份云相册app下载-照片备份云相册下载V1.9安卓版-西西软件下载...
  6. 大家都为什么考博?采访了12名考生,发现最主要原因竟是这个
  7. Python基础项目实践之:面向对象方法实现模拟银行管理系统
  8. MOD - Power Modulo Inverted(SPOJ3105) + Clever Y(POJ3243) + Hard Equation (Gym 101853G ) + EXBSGS
  9. insert into select from 部分字段插入_MySQL的故障分析,Insert 加锁与死锁分析-爱可生
  10. 样条曲线_Apollo规划算法基于样条曲线的平滑分析(一)
  11. markdown与latex:如何写出像数学书里的大于等于\geqslant和小于等于\leqslant
  12. init函数的注意事项和细节
  13. oracle10g配置tns,连接Oracle 10g时ORA-12514: TNS: 监听进程不能解析在连接描述符中给出的SID...
  14. 模拟信号的数字处理方法
  15. UE4 虚幻引擎 引用第三方库lib文件
  16. 北京大学计算机学院课程表,北京大学课程表.PDF
  17. vs 输入代码时出现火花_VSV和VBV随发动机转速和进气温度怎么变化维修执照机务在线...
  18. ucla 计算机专业 本科申请,2020年加州大学洛杉矶分校本科专业设置
  19. 京东暑期实习面经(已OC)
  20. PCL中的OpenNI采集卡框架(The OpenNI Grabber Framework in PCL)

热门文章

  1. FTP 编程 5 文件传输与目录切换
  2. 查询作者名长度大于8的 sql语言_从零学会SQL-入门
  3. linux i2c adapter 增加设备_「正点原子Linux连载」第六十二章Linux SPI驱动实验(一)...
  4. html演示 用鼠标画记号,html怎么用鼠标画出一条直线,鼠标移动时候要能看到线条...
  5. java正则表达式 后顾,正则表达式:从Copy到手写
  6. 在ibatis中做等值判断(if-else)
  7. acill排序 java_字符串ASCII码排序
  8. java 1.7 可变参数,JDK1.7新特性(2):异常和可变长参数处理
  9. android课程设计时钟,单片机制作的电子钟(含闹钟功能)课程设计报告
  10. djano 字段不重复_硬不硬你说了算!近 40 张图解被问千百遍的 TCP 3 次握手和 4 次挥手面试题...