首页 > 数据库 >使用Canal同步mysql数据到es

使用Canal同步mysql数据到es

时间:2023-07-19 21:44:05浏览次数:35  
标签:Canal canal slave log binary mysql master MySQL es

一、简介


Canal主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。
当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x

二、工作原理

MySQL主备复制原理

  • MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志事件binary log events,可以通过 show binlog events 进行查看)
  • MySQL slave 将 master 的 binary log events 拷贝到它的中继日志(relay log)
  • MySQL slave 重放 relay log 中事件,将数据变更反映它自己的数据

canal 工作原理

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

三、准备安装包

下载地址,我使用的是1.1.6版本
https://github.com/alibaba/canal/releases/tag/canal-1.1.6
国内的话,可以在绿色聊天软件搜索:程序员朱永胜 关注回复1006领取安装包,不限速下载
image.png

  • deployer包:服务包
  • admin包:UI管理系统,需要的话可以下载
  • adapter包:官方提供的客户端,可以实现自动同步

四、启动Canal服务

4.1 下载

最简单的使用,我们只需要安装deplyee包即可,其他的不需要

4.2 新增用户并授权image.png

4.3 配置文件修改

4.3.1 canal.propertiesimage.png

这个配置文件默认即可,无需修改配置

4.3.2 instance.propertiesimage.png

修改mysql地址,要确保已经配置了账号密码并授权image.png

4.4 启动image.png

image.png

4.5 确认启动成功image.png

image.png

五、安装依赖

<dependencies>
    <dependency>
        <groupId>com.alibaba.otter</groupId>
        <artifactId>canal.client</artifactId>
        <version>1.1.4</version>
    </dependency>
</dependencies>

六、运行效果

由于代码比较长,我放到最后了,这里先说下效果。
代码启动后,我们只需要变更任意表里面的数据即可看到控制台打印内容。
数据很清晰,有具体的数据库,表,操作类型,以及字段及修改的值。
到这里基本就算结束了,后续就是根据业务自己推送到ES中。当然,也可以使用官方的adapter推送到ES中。image.png

七、编写客户端代码

测试代码官网地址:https://github.com/alibaba/canal/blob/master/example/src/main/java/com/alibaba/otter/canal/example/AbstractCanalClientTest.java
国内的话,可以在绿色聊天软件搜索:程序员朱永胜 关注回复1007领取代码,不限速下载

6.1 BaseCanalClientTestimage.png

6.2 SimpleCanalClientTestimage.png

6.3 AbstractCanalClientTestimage.png

标签:Canal,canal,slave,log,binary,mysql,master,MySQL,es
From: https://www.cnblogs.com/zysicyj/p/17566862.html

相关文章

  • 错误连接数据库 [mysql] : org.pentaho.di.core.exception.KettleDatabaseExcepti
    错误连接数据库[mysql]:org.pentaho.di.core.exception.KettleDatabaseException是一种常见的错误,通常在使用PentahoDataIntegration(PDI)工具连接到MySQL数据库时出现。本文将介绍这个错误的原因,以及如何解决它。在使用PDI工具连接到MySQL数据库时,经常会遇到数据库连接失败的......
  • Metadata processing is not available 解决方案
    问题Export:Release11.2.0.4.0-ProductiononWedJul1920:49:242023Copyright(c)1982,2011,Oracleand/oritsaffiliates.Allrightsreserved.Connectedto:OracleDatabase11gEnterpriseEditionRelease11.2.0.4.0-64bitProductionWiththePartitio......
  • Codeforces Round 885 (Div. 2)
    Preface打的就是依托答辩居然也能上分,看来手稳还是重要的说D题半场开香槟以为随便写,然后没想到怎么处理这个局部没有三分性的函数,直接GG后面听学长一说其实分成四种函数分别求最值即可直接恍然大悟,只能说还是太菜太菜而且F好像是个蓝桥杯的某个题的弱化版,我说比赛的时候怎么那......
  • Codeforces Round 882 div.2 A
    Smiling&Weeping----总有人间一两风,填我十万八千梦A.TheManwhobecameaGodtimelimitpertest1secondmemorylimitpertest256megabytesinputstandardinputoutputstandardoutput Kars istiredand......
  • QSqlDatabasePrivate::removeDatabase: connection ‘myConnection’ is still in use
    1.解决QSqlDatabasePrivate::removeDatabase:connection‘myConnection’isstillinuse,allquerieswillceasetowork的问题该问题主要是因为没有关闭之前的数据库连接,然后又需要创建新的数据库连接导致。解决方案:必须释放该连接的所有查询,即删除所有与该连接有关的quer......
  • 跟着Environmental Research学作图:R语言ggplot2堆积柱形图叠加折线图(1)
    跟着EnvironmentalResearch学作图:R语言ggplot2堆积柱形图叠加折线图(1)简介在环境研究领域,数据可视化是非常重要的工具,可以帮助我们更好地理解和解释复杂的数据。本篇文章将教会你如何使用R语言中的ggplot2包创建堆积柱形图叠加折线图,以展示不同组别之间的关系和趋势。环境设......
  • 对UION结果进行排序 MYSQL
    对UION结果进行排序MYSQL在MySQL中,可以使用UNION操作符将多个SELECT语句的结果合并成一个结果集。但是,UNION操作符的结果默认是按照表达式顺序进行排序的。如果我们想要对UNION的结果进行排序,可以使用子查询或者别名的方式来实现。子查询排序子查询是将一个SELECT语句嵌套在另......
  • 电脑安装两个MySQL数据库怎么查看指定
    电脑安装两个MySQL数据库的问题解决方案在某些情况下,我们可能需要在一台电脑上安装并运行两个独立的MySQL数据库实例。这可能是因为需要同时管理不同的项目,或者进行开发和测试等工作。本文将介绍如何在一台电脑上安装并运行两个MySQL数据库,并演示如何查看指定的数据库。安装和配......
  • 导出远程mysql数据库到本地
    导出远程MySQL数据库到本地作为一名经验丰富的开发者,你需要教会一位刚入行的小白如何实现将远程MySQL数据库导出到本地。这个过程其实并不复杂,只需要按照以下步骤进行操作即可。步骤概览下面是导出远程MySQL数据库到本地的步骤概览:步骤操作1.连接远程MySQL数据库2......
  • 导出 mysql 结构到csv
    导出MySQL结构到CSVCSV(CommaSeparatedValues)是一种常用的文本文件格式,用于存储结构化数据,常用于数据导入、导出和交换。在某些情况下,我们可能需要将MySQL数据库的结构导出为CSV格式,以便于与其他系统进行数据交互或数据分析。本文将通过代码示例介绍如何使用Python和My......