°Fuhb
要比别人得到更多,就要付出比别人更多的努力
展开
-
Canal解析数据报错:column size is not match for table xxxx 59 vs 57
起因: 本人修改了meta.dat 文件的position,想让canal跳过中间的binlog,直接从最新位置开始同步,改完之后重启canal,接收到的新数据全都报错了问题原因: canal接收到的event解析后有59个字段,但是本地缓存的表结构只有57个字段,导致校验不通过。但是我已经改了position,从最新的数据开始同步,怎么会有字段不一致的情况解决问题: 把meta.dat 的 timestamp 时间戳也改成最新时间即可。canal启动的时候,会根据timestamp时间戳,从数据原创 2021-12-23 17:14:27 · 3845 阅读 · 0 评论 -
Canal接收、存储、消费binlog过程详解
文章目录获取binlog过程存储binlog过程消费binlog过程获取binlog过程启动线程AbstractEventParser 有个线程对象 parseThread,它的任务就是执行dump所有工作判断从哪里开始dump这里先了解下canal的存储机制:FileMixedMetaManager启动时会从meta.dat加载数据,这里记录了每个Client消费的进度。每当有Client提交Ack,会实时更新内存中的信息,并且每秒同步一次到meta.dat。因此,这里有2种情况:meta原创 2021-11-21 22:43:38 · 962 阅读 · 0 评论 -
Canal实时同步数据到RocketMQ
环境准备Canal 1.1.5:https://blog.csdn.net/qq_28834355/article/details/117785317RocketMQ 4.8.0:https://blog.csdn.net/qq_28834355/article/details/113420903修改配置编辑配置文件 conf/canal.properties,修改这几个位置# tcp, kafka, rocketMQ, rabbitMQcanal.serverMode = rocketMQ原创 2021-11-20 16:49:44 · 1126 阅读 · 0 评论 -
CanalAdapter启动过程分析(源码详解)
1. 概述Canal-Adapter是由阿里开发的SpringBoot项目,可以把它理解成Canal的消费者。他包含了许多子工程,例如 es、hbase、logger、rdb 。这篇文章讲的就是Adapter启动的时候,如何根据配置文件启动对应的消费者Canal版本:1.1.52. 源码解析2.1 启动入口启动工程是 client-adapter 底下的 launcher 子项目,找到 CanalAdapterApplication。这里只有个 main 方法,只是我们调试用而已,没其他重点。原创 2021-10-19 17:16:56 · 816 阅读 · 0 评论 -
Canal Adapter二次开发,实现MySQL实时同步到Redis
文章目录前言准备工作Adapter(redis)开发前言众所周知,通过 Canal 可以取到 MySQL Master 节点的 Binlog 日志,并且使用它提供的几种 Client-Adapter,就能选择将数据同步到 Elasticsearch、MySQL(Slave)、Kafka、HBase,唯独缺少了我们最经常使用的 Redis。本篇文章,就是教你如何对 Adapter 组件进行扩展,实现 MySQL -> Redis 的数据传递。版本:Canal-1.1.5JDK环境:1.8安装原创 2021-10-16 16:25:05 · 664 阅读 · 0 评论 -
Canal全方位深入讲解,看这一篇就够了
文章目录1. 概述2. Canal的组成3. Server解析3.1 EventParser3.2 EventSink3.3 EventStore3.4 MetaManager4. Client解析1. 概述Canal是阿里巴巴开发的一项开源组件,通过将自己伪装成MySQL Slave节点来接收Master节点的Binlog日志,然后就可以实现我们的需求,例如:同步到MySQL从库、同步到Elasticsearch、同步到Kafka 等等。2. Canal的组成Canal主要分成 Server(服原创 2021-10-14 22:38:30 · 539 阅读 · 0 评论 -
canal应用四:canal-adapter的使用
文章目录前言适配器结构适配器配置说明总配置文件 application.yml使用远程配置(MySQL)适配器启动前言前面的文章,我们都是通过编写Java程序来实现Client消费。Canal 提供了几种适配器,允许我们通过一定的配置实现消费数据并同步到其他存储介质。目前支持功能:日志适配器关系型数据库的数据同步(表对表同步), ETL功能HBase的数据同步(表对表同步), ETL功能Elasticsearch的数据同步,ETL功能适配器结构client-adapter分为适配器和启动原创 2021-10-12 16:13:29 · 2474 阅读 · 0 评论 -
canal应用三:启动多个Instance实例
文章目录前言2个Instance监听不同的库2个Instance监听相同的库前言Canal通过 canal.destinations 来配置对应的 Instance 实例,这里允许配置多个Instance,中间用逗号分开即可。2个Instance监听不同的库修改 canal.properties 文件,找到 canal.destinations 把他修改成 example1,example2canal.destinations = example1,example2在 conf 目录下原创 2021-10-12 15:31:21 · 2404 阅读 · 0 评论 -
canal应用二:mysql数据实时同步到redis
前言在项目开发中,通常使用redis作为数据的缓存,那么经常遇到一个问题,修改MySQL的数据要怎么同步到Redis呢?方式一:在系统的保存、删除接口同时对redis进行操作,但是存在一个缺点,就是如果直接修改数据库的情况下无法同步数据;方式二:使用canal拉取mysql binlog,获取mysql变化的数据日志,然后同步操作redis。这里我们采用方式二,基本设计思路如下图所示准备工作安装canal-server、canal-admin:canal安装和基本使用安装mysql、r原创 2021-06-18 16:03:38 · 1217 阅读 · 4 评论 -
canal应用一:基于mysql binlog的日志解析工具
文章目录前言mysql 配置canal 下载安装canal client前言canal 是阿里巴巴开发的MySQL数据实时同步工具,基于binlog增量日志解析,提供了增量数据订阅和消费功能。canal 允许将订阅到的 mysql 增量日志,同步到 mysql、kafka、elasticsearch 等等mysql 配置对于自建 MySQL , 需要先开启 Binlog 写入功能,配置 binlog-format 为 ROW 模式,my.cnf 中配置如下[mysqld]log-bin=原创 2021-06-10 17:25:04 · 1326 阅读 · 0 评论