浅谈: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
1809 0
|
canal SQL 关系型数据库
Canal报错总结(三)
Canal报错总结(三)
|
canal SQL 关系型数据库
|
canal 关系型数据库 MySQL
canal 组件介绍(1)
前言     首先,这个文章系列主要是讲canal的,毫无疑问,对吧。那么在开始阅读这个系列之前,我希望真正有兴趣的同学一定要先去阅读canal的官方文档,没有什么比这个更权威了。
2390 0
|
canal SQL JSON
Elastic: canal数据同步到ES配置常见报错
所有报错均为博主在实操过程中遇到的错误和解决办法,如果有其他报错或者不同的解决办法,请留言告诉我 安装canal过程中遇到问题,先在本文中查询是否有相同报错,将会为你节约大量排错时间
972 0
Elastic: canal数据同步到ES配置常见报错
|
1月前
|
canal 监控 关系型数据库
canal的特点是什么?如何使用?
【10月更文挑战第23天】canal的特点是什么?如何使用?
116 3
|
canal druid 关系型数据库
Canal报错总结(二)
Canal报错总结(二)
|
canal 消息中间件 监控
[从零单排canal 02] canal 集群版+admin控制台 最新搭建姿势(基于1.1.4版本)
[从零单排canal 02] canal 集群版+admin控制台 最新搭建姿势(基于1.1.4版本)
1563 0
[从零单排canal 02] canal 集群版+admin控制台 最新搭建姿势(基于1.1.4版本)
|
canal 消息中间件 缓存
Canal 实战 | 第一篇:SpringBoot 整合 Canal + RabbitMQ 实现监听 MySQL 数据库同步更新 Redis 缓存
Canal 实战 | 第一篇:SpringBoot 整合 Canal + RabbitMQ 实现监听 MySQL 数据库同步更新 Redis 缓存
|
otter 数据库连接 数据库
Otter支持同步整个实例
Otter支持同步整个实例
687 2