canal中间件
时间:2019-08-13
本文章向大家介绍canal中间件,主要包括canal中间件使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
简介:
基于数据库增量(模拟MySQL slave的交互协议)日志解析,提供增量数据订阅和消费(客户端与canal建立关系)
安装版本:1.1.0
git
环境需求:
- jdk1.7以上
- mysql开启binlog_format=row,并配置mysql slave相关权限。
目录结构:
[root@wap canal]# tree -L 2 /usr/local/canal
/usr/local/canal
├── bin #启动、关闭、重启命令
│ ├── restart.sh
│ ├── startup.bat
│ ├── startup.sh
│ └── stop.sh
├── conf #配置文件目录
│ ├── canal.properties #canal程序配置文件
│ ├── example #数据库实例配置目录,一个实例一个目录
│ │ ├── instance.properties #每个实例单独的配置文件
│ │ └── meta.dat #记录binlog相关信息,防止重启相关信息丢失
│ ├── logback.xml
│ ├── metrics
│ └── spring
├── lib
│ ├── aopalliance-1.0.jar
│ ├── aviator-2.2.1.jar ....
└── logs
├── canal #canal程序本身日志目录
└── example #连接数据库实例的日志目录
配置说明:
conf/canal.properties 主配置文件:
- canal.id: 每个canal server实例的唯一标识
- canal.ip: 服务地址
- canal.port: 服务端端口,客户端连接
- canal.zkServers: 集群时,连接zookeeper
- canal.instance.detecting.enable: 是否开启心跳检查
- canal.instance.detecting.sql: 心跳检查sql,配置select查询语句,适用于高可用场景
- canal.destinations: canal上部署的instance列表,多实例用逗号分隔
- canal.conf.dir: 配置文件目录
- canal.auto.scan: 开启instance自动扫描,扫描canal.conf.dir目录下的instance
- canal.file.data.dir: 持久化数据到file目录
- canal.instance.global.spring.xml: 全局的spring配置方式的组件文件,默认选择基于file持久化模式,用于非HA场景
canal.instance.global.spring.xml配置选项介绍
memory-instance.xml介绍:
所有的组件(parser , sink , store)都选择了内存版模式,记录位点的都选择了memory模式,重启后又会回到初始位点进行解析
特点:速度最快,依赖最少(不需要zookeeper)
场景:一般应用在quickstart,或者是出现问题后,进行数据分析的场景,不应该将其应用于生产环境
default-instance.xml介绍:
store选择了内存模式,其余的parser/sink依赖的位点管理选择了持久化模式,目前持久化的方式主要是写入zookeeper,保证数据集群共享.
特点:支持HA
场景:生产环境,集群化部署.
group-instance.xml介绍:
主要针对需要进行多库合并时,可以将多个物理instance合并为一个逻辑instance,提供客户端访问。
场景:分库业务。 比如产品数据拆分了4个库,每个库会有一个instance,如果不用group,业务上要消费数据时,需要启动4个客户端,分别链接4个instance实例。使用group后,可以在canal server上合并为一个逻辑instance,只需要启动1个客户端,链接这个逻辑instance即可.
conf/example/instance.properties 实例配置
- canal.instance.mysql.slaveId: slaveid唯一,与mysql serverid不同即可。
- canal.instance.gtidon=false : 是否开启gtid
- canal.instance.master.address: 数据库链接地址
- canal.instance.master.journal.name: 链接起始的binlog文件
- canal.instance.master.position: 链接起始的binlog偏移量
- canal.instance.master.timestamp: 链接时起始的binlog时间戳
- canal.instance.dbUsername: 数据库帐号
- canal.instance.dbPassword: 数据库密码
- canal.instance.connectionCharset: 与数据库编码格式一致
- canal.instance.filter.regex=.\.. :正则匹配库和表,默认所有库和表
- canal.instance.filter.black.regex=mysql..* :过滤掉哪些库和表,这里过滤mysql库的所有表。正则匹配
配置式例:
1. 多实例配置
- 打开canal.auto.scan参数,会根据canal.auto.scan.interval定义的频率,进行扫描
- 发现目录有新增,启动新的instance
- 发现目录有删除,关闭老的instance
- 发现对应目录的instance.properties有变化,重启instance
cp -a conf/example conf/example_1
- 关闭canal.auto.scan,在canal.destinations后以逗号分隔配置多实例名称。
canal.destinations= example,example_1
$ cp -a conf/example conf/example_1
$ ./bin/restart.sh
高可用,集群相关配置wiki中介绍,请参阅官网
源码分析
原文地址:https://www.cnblogs.com/dance-walter/p/11344851.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- R语言中自编基尼系数的CART回归决策树的实现
- ArrayList的删除姿势你都掌握了吗
- sas神经网络:构建人工神经网络模型来识别垃圾邮件
- R语言多分类logistic逻辑回归模型在混合分布模拟单个风险损失值评估的应用
- 10分钟带你入门git到github
- 微服务[学成在线] day18:基于oauth2实现RBAC认证授权、微服务间认证实现
- 【TBase开源版测评】分布式事务全局一致性
- R语言进阶之主成分分析
- 二胖写参数校验的坎坷之路
- 图像倾斜校正算法的MATLAB实现:图像倾斜角检测及校正
- R语言时间序列数据指数平滑法分析交互式动态可视化
- R语言进阶之图形的合并
- R语言广义线性模型索赔频率预测:过度分散、风险暴露数和树状图可视化
- 还在使用Future轮询获取结果吗?CompletionService快来了解下。
- R语言通过伽玛与对数正态分布假设下的广义线性模型对大额索赔进行评估预测