浅谈:canal配置方式

简介: 浅谈:canal配置方式

网络异常,图片无法展示
|


配置加载方式


canal配置方式有两种:


  1. ManagerCanalInstanceGenerator: 基于manager管理的配置方式,目前alibaba内部配置使用这种方式。大家可以实现CanalConfigClient,连接各自的管理系统,即可完成接入。
  2. SpringCanalInstanceGenerator:基于本地spring xml的配置方式,目前开源版本已经自带该功能所有代码,建议使用。


Spring配置



spring配置的原理是将整个配置抽象为两部分:


  1. xxx-instance.xml: canal组件的配置定义,可以在多个instance配置中共享
  2. xxx-properties: 每个instance通道都有各自的一份定义,因为每个mysql的ip,账号,密码等等信息不会相同


通过spring的PropertyPlaceholderConfigurer通过机制将两部分融合,生成一个instance实例对象,每个instance对应的组件都是相互独立的,互不影响。


properties配置


properties配置文件分为两部分:

  1. canal.properties: 系统根配置文件,对应一个canal server
  2. instance.properties: instance级别的配置文件,每个instance一份


instance.properties配置介绍
a.在canal.properties定义了canal.destinations后,需要在canal.conf.dir对应的目
录下建立同名的文件


比如:canal.destinations = example1,example2,这时需要创建example1和example2两个目录,每个目录里各自有一份instance.properties.

ps. canal自带了一份instance.properties demo,可直接复制conf/example目录进行配置修改。

cp -R example example1/
cp -R example example2/


b. 如果canal.properties未定义instance列表,但开启了canal.auto.scan时


  • server第一次启动时,会自动扫描conf目录下,将文件名做为instance name
  • 启动对应的instance server运行过程中,会根据canal.auto.scan.interval定义的频率,进行扫描


1.发现目录有新增,启动新的instance


2.发现目录有删除,关闭老的instance


3.发现对应目录的instance.properties有变化,重启instance.


xxx-instance.xml配置介绍


目前默认支持的xxx-instance.xml有四种:


  • memory-instance.xml
  • file-instance.xml
  • default-instance.xml
  • group-instance.xml.


spring/memory-instance.xml介绍:


  • 所有的组件(parser , sink , store)都选择了内存版模式,记录位点的都选择了memory模式,重启后又会回到初始位点进行解析。
  • 特点:速度最快,依赖最少(不需要zookeeper)
  • 场景:一般应用在quickstart,或者是出现问题后,进行数据分析的场景,不应该将其应用于生产环境


spring/file-instance.xml介绍:


  • 所有的组件(parser , sink , store)都选择了基于file持久化模式;
  • 特点:不支持HA机制.支持单机持久化.
  • 场景:生产环境,无HA需求,简单可用.


spring/default-instance.xml介绍:


  • 所有的组件(parser , sink , store)都选择了持久化模式,目前持久化的方式主要是写入zookeeper,保证数据集群共享.
  • 特点:支持HA
  • 场景:生产环境,集群化部署


spring/group-instance.xml介绍:


  • 主要针对需要进行多库合并时,可以将多个物理instance合并为一个逻辑instance,提供客户端访问。
  • 场景:分库业务。比如产品数据拆分了4个库,每个库会有一个instance,如果不用group,业务上要消费数据时,需要启动4个客户端,分别链接4个instance实例。使用group后,可以在canal server上合并为一个逻辑instance,只需要启动1个客户端,链接这个逻辑instance即可.


参考文章:

https://github.com/alibaba/canal/wiki/AdminGuide

相关文章
|
canal Kubernetes 关系型数据库
【K8S系列】深入解析k8s网络插件—Canal
【K8S系列】深入解析k8s网络插件—Canal
1632 0
|
canal SQL 关系型数据库
Canal报错总结(三)
Canal报错总结(三)
|
canal SQL 关系型数据库
|
canal 关系型数据库 MySQL
canal 组件介绍(1)
前言     首先,这个文章系列主要是讲canal的,毫无疑问,对吧。那么在开始阅读这个系列之前,我希望真正有兴趣的同学一定要先去阅读canal的官方文档,没有什么比这个更权威了。
2379 0
|
canal SQL JSON
Elastic: canal数据同步到ES配置常见报错
所有报错均为博主在实操过程中遇到的错误和解决办法,如果有其他报错或者不同的解决办法,请留言告诉我 安装canal过程中遇到问题,先在本文中查询是否有相同报错,将会为你节约大量排错时间
943 0
Elastic: canal数据同步到ES配置常见报错
|
7天前
|
canal 监控 关系型数据库
canal的特点是什么?如何使用?
【10月更文挑战第23天】canal的特点是什么?如何使用?
20 3
|
4月前
|
消息中间件 存储 负载均衡
zookeeper 特点、使用场景及安装,配置文件解析
zookeeper 特点、使用场景及安装,配置文件解析
65 2
|
5月前
|
消息中间件 监控 Kafka
深入解析:Kafka 为何不支持全面读写分离?
**Kafka 2.4 引入了有限的读写分离,允许Follower处理只读请求,以缓解Leader压力。但这不适用于所有场景,特别是实时数据流和日志分析,因高一致性需求及PULL同步方式导致的复制延迟,可能影响数据实时性和一致性。在设计系统时需考虑具体业务需求。**
64 1
|
6月前
|
canal 缓存 关系型数据库
Springcloud Alibaba使用Canal将Mysql数据实时同步到Redis保证缓存的一致性
canal [kə'næl] ,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。其诞生的背景是早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。
225 0
|
canal druid 关系型数据库
Canal报错总结(二)
Canal报错总结(二)