mysql 开源~canal的深度解读1
一 简介:经过一段时间的研究,对canal有了一些见解
二 配置文件:
1 canal.properties (系统根配置文件)
主要参数列表
canal.properties (系统根配置文件)
canal.destinations= example 当前server上部署的instance列表 默认为example 在canal.properties定义了canal.destinations后,需要在canal.conf.dir对应的目录下建立同名的文件
canal.auto.scan 开启instance自动扫描 如果配置为true,canal.conf.dir目录下的instance配置变化会自动触发:
a. instance目录新增: 触发instance配置载入,lazy为true时则自动启动
b. instance目录删除:卸载对应instance配置,如已启动则进行关闭
c. instance.properties文件变化:reload instance配置,如已启动自动进行重载
canal.auto.scan.interval=5 扫描间隔 默认5S
canal.instance.global.mode=spring 全局配置加载方式、
canal.zkServers=集群 ZK集群配置
#binlog配置
canal.instance.binlog.format = ROW,STATEMENT,MIXED 支持的binlog格式
canal.instance.binlog.image = FULL,MINIMAL,NOBLOB 支持的binlog
#sql语句过滤
canal.instance.filter.query.dcl = false 权限和存储过程相关语句 设置为false 表示不丢弃
canal.instance.filter.query.dml = false 删增改相关语句 设置为false 表示不丢弃
canal.instance.filter.query.ddl = false DDL相关语句 设置为false 表示不丢弃
canal.instance.filter.table.error = false
三 关于 canal destinations
1 server第一次启动时,会自动扫描conf目录下,将文件名做为instance name,启动对应的instance
2 server运行过程中,会根据canal.auto.scan.interval定义的频率,进行扫描
1. 发现目录有新增,启动新的instance
2. 发现目录有删除,关闭老的instance
3. 发现对应目录的instance.properties有变化,重启instance
3 通过以上可以看出 不必再配置文件中增加实例定义,扫描会自动发现
四 关于 canal 扫描的binlog
1 canal.instance.master.journal.name + canal.instance.master.position : 精确指定一个binlog位点,进行启动
2 canal.instance.master.timestamp : 指定一个时间戳,canal会自动遍历mysql binlog,找到对应时间戳的binlog位点后,进行启动
3 不指定任何信息:默认从当前数据库的位点,进行启动。(show master status)
五 关于 canal的 实例meta
1 每个 instance 下 如果被应用读取,都有一个 meta文件,里面记录着同步的详细信息
{"clientDatas":[{"clientIdentity":{"clientId":1001,"destination":"dbname","filter":"过滤规则"},"cursor":{"identity":{"slaveId":-1,"sourceAddress":{"address":"IP","port":3306}},"postion":{"included":false,"journalName":"mysql- bin.000085","position":283121001,"timestamp":1512620199000}}}],"destination":"dbname"}
包括过滤规则,instance name,同步信息(主库 IP filename,position)
2 通过meta存在与否可以判断当前instance是否被程序读取
六 关于 canal的消费使用情况
1 单独的 instance 只能一个客户端进行消费
2 如果第一个客户端停止消费,第二个客户端进行消费的时候 binlog会继承第一个客户端进行消费
3 只要目标数据库进行事务变更,后端消费就会出现transaction显示
七 关于 canal与ZK的配合
1 搭建两组 canal 服务和一组ZK配置
2 canal.zkServers=IP:PORT
3 重启两组canal生效
4 进入zk进行查看 get /otter/canal/destinations/example/running
{"active":true,"address":"cannalIP1","cid":1}
5 停止接入的canal 再进入zk进行查看
{"active":true,"address":"cannalIP2","cid":1}
八 关于canal 研发的一些问题
1 关于单事务的过滤问题,出现大量transaction,如何进行过滤,这是一个问题
mysql 开源~canal的深度解读1的更多相关文章
- mysql 开源~canal安装解析
一 简介:今天咱们来聊聊canal的一些东西 二 原理: canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议 mysql ma ...
- mysql 开源 ~ canal+otter系列(1)
一 简介: 今天咱们来聊聊 canal和otter的组合搭配吧二 概念统计 1. 基于Canal开源产品,获取数据库增量日志数据. 2. 典型管理系统架构,manager(web管理)+nod ...
- mysql 开源 ~ canal+otter系列(2)
一 创建相应用户 源数据用户权限: GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO `retl`@'%'; 目的 ...
- mysql 开源~canal维护相关问题
一 简介:咱们来讨论下canal的一些技巧 二 场景 场景1 canal过滤指定库后,后端java调用读取相关数据时候出现大量的空事务,为何会出现空事务呢,空事务是由于配置了指定的过滤规则,导致了其他 ...
- 深度解读Facebook刚开源的beringei时序数据库——数据压缩delta of delta+充分利用内存以提高性能
转自:https://yq.aliyun.com/topic/58?spm=5176.100239.blogcont69354.9.MLtp4T 摘要: Facebook最近开源了beringei时序 ...
- 如何用区块链技术解决信任问题?Fabric 架构深度解读
阿里妹导读:区块链技术,随着比特币的兴起而为大家所知.但是具体到技术本身,大家相对熟悉的几个词可能是“数据不可篡改”.“公开链”.“分布式数据”.“共识机制”等. 这篇文章将抛砖引玉,通过深度解读Hy ...
- SQL Server 2019 深度解读:微软数据平台的野望
本文为笔者在InfoQ首发的原创文章,主要利用周末时间陆续写成,也算近期用心之作.现转载回自己的公众号,请大家多多指教. 11 月 4 日,微软正式发布了其新一代数据库产品 SQL Server 20 ...
- 我就是认真:Linux SWAP 深度解读(必须收藏)
我就是认真:Linux SWAP 深度解读(必须收藏) http://mp.weixin.qq.com/s?__biz=MzA4Nzg5Nzc5OA==&mid=2651660097& ...
- AI 新技术革命将如何重塑就业和全球化格局?深度解读 UN 报告(上篇)
欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 张钦坤 腾讯研究院秘书长蔡雄山 腾讯研究院法律研究中心副主任祝林华 腾讯研究院法律研究中心助理研究员曹建峰 腾讯研究院法律研究中心高级研究员 ...
随机推荐
- P2707 Facer帮父亲
题目背景 Facer可是一个孝顺的孩纸呦 题目描述 Facer的父亲是一名经理,现在总是垂头丧气的. Facer问父亲,怎么啦?父亲说,公司出了点问题啊. 公司管理着N个风景点,每个风景点都有不少人来 ...
- day5 模拟购物车程序
#__author__: Administrator #__date__: 2018/7/11 print(''' ======本公司退出以下产品======= 1.bicycle---------- ...
- 如何将Anaconda更新到想要的python版本
最近用Anaconda比较多,因为它里面的包很全啊.如果下个原生的python,要用的时候得自己一个个装. 但是有些包又互相依赖,一个个装的时候实在很抓狂.懒人就想到了anaconda这种套装集合了. ...
- 对程序进行package封装
一.package包 格式:package 代码必须写在源代码文件的第一句, 约定俗成使用公司域名的倒写,之后再加其他. for example: package cn.chuanzhiboke.te ...
- (string find) 亲和串 hdu2203
亲和串 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- kali linux 启动无法自动连接网络问题i
kali 有一个很大的问题:无法自动连接网咯. 而且,按照网上的方法修改/etc/Network-manager/Network*.conf和/etc/network/interfaces也没有效果. ...
- RegExp 对象
什么是 RegExp? RegExp 是正则表达式的缩写. 当您检索某个文本时,可以使用一种模式来描述要检索的内容.RegExp 就是这种模式. 简单的模式可以是一个单独的字符. 更复杂的模式包括了更 ...
- Port Forwarding in Windows
转自:http://woshub.com/port-forwarding-in-windows/ Since Windows XP there is a built-in ability in Mic ...
- Swift学习笔记4
1.延迟存储属性是指当第一次被调用的时候才会计算其初始值的属性.在属性声明前使用lazy来标示一个延迟存储属性. 必须将延迟存储属性声明成变量(使用var关键字),因为属性的初始值可能在实例构造完成之 ...
- python---RabbitMQ(3)exchange中关键字发送direct(组播)
设置关键字,交换机根据消费者传递的关键字判断是否与生产者的一致,一致则将数据传递给消费者 可以实现对消息分组 生产者: # coding:utf8 # __author: Administrator ...