一 简介:经过一段时间的研究,对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的更多相关文章

  1. mysql 开源~canal安装解析

    一 简介:今天咱们来聊聊canal的一些东西 二 原理: canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议 mysql ma ...

  2. mysql 开源 ~ canal+otter系列(1)

    一 简介: 今天咱们来聊聊 canal和otter的组合搭配吧二 概念统计   1. 基于Canal开源产品,获取数据库增量日志数据.   2. 典型管理系统架构,manager(web管理)+nod ...

  3. mysql 开源 ~ canal+otter系列(2)

    一 创建相应用户    源数据用户权限: GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO `retl`@'%';    目的 ...

  4. mysql 开源~canal维护相关问题

    一 简介:咱们来讨论下canal的一些技巧 二 场景 场景1 canal过滤指定库后,后端java调用读取相关数据时候出现大量的空事务,为何会出现空事务呢,空事务是由于配置了指定的过滤规则,导致了其他 ...

  5. 深度解读Facebook刚开源的beringei时序数据库——数据压缩delta of delta+充分利用内存以提高性能

    转自:https://yq.aliyun.com/topic/58?spm=5176.100239.blogcont69354.9.MLtp4T 摘要: Facebook最近开源了beringei时序 ...

  6. 如何用区块链技术解决信任问题?Fabric 架构深度解读

    阿里妹导读:区块链技术,随着比特币的兴起而为大家所知.但是具体到技术本身,大家相对熟悉的几个词可能是“数据不可篡改”.“公开链”.“分布式数据”.“共识机制”等. 这篇文章将抛砖引玉,通过深度解读Hy ...

  7. SQL Server 2019 深度解读:微软数据平台的野望

    本文为笔者在InfoQ首发的原创文章,主要利用周末时间陆续写成,也算近期用心之作.现转载回自己的公众号,请大家多多指教. 11 月 4 日,微软正式发布了其新一代数据库产品 SQL Server 20 ...

  8. 我就是认真:Linux SWAP 深度解读(必须收藏)

    我就是认真:Linux SWAP 深度解读(必须收藏) http://mp.weixin.qq.com/s?__biz=MzA4Nzg5Nzc5OA==&mid=2651660097& ...

  9. AI 新技术革命将如何重塑就业和全球化格局?深度解读 UN 报告(上篇)

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 张钦坤 腾讯研究院秘书长蔡雄山 腾讯研究院法律研究中心副主任祝林华 腾讯研究院法律研究中心助理研究员曹建峰 腾讯研究院法律研究中心高级研究员 ...

随机推荐

  1. ceph S3测试--cosbench

    COSBench安装 Cosbench是Intel的开源云存储性能测试软件,COSBench目前已经广泛使用与云存储测试,并作为云存储的基准测试工具使用 1 环境 1.1 操作系统 COSBench可 ...

  2. gym 101064 G.The Declaration of Independence (主席树)

    题目链接: 题意: n个操作,有两种操作: E p  c    在序号为p的队列尾部插入c得到新的队列,序号为i D p   查询并删除序号为p的队列顶部的元素,得到序号为i的新队列 思路: 需要查询 ...

  3. 2018 CCPC网络赛 1010 hdu 6447 ( 树状数组优化dp)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=6447 思路:很容易推得dp转移公式:dp[i][j] = max(dp[i][j-1],dp[i-1][j ...

  4. LOJ #2434. 「ZJOI2018」历史(LCT)

    题意 click here 题解 我们首先考虑答案是个什么样的东西, 不难 发现每个点可以单独计算它的贡献. 令每个点 \(i\) 崛起次数为 \(a_i\) . 假设一个点子树的 \(\sum a_ ...

  5. 【Luogu5108】仰望半月的夜空(后缀数组)

    [Luogu5108]仰望半月的夜空(后缀数组) 题面 洛谷 题解 实名举报这题在比赛之前还不是这个样子的,还被我用SAM给水过去了 很明显求出\(SA\)之后就是按照\(SA\)的顺序从前往后考虑每 ...

  6. 【Luogu4719】动态dp

    题面 洛谷 题解 等下发链接 代码: #include<iostream> #include<cstdio> #include<cstdlib> #include& ...

  7. 洛谷P4364 IIIDX

    题意:给定n个数和k,把n个数排成序列,满足ai >= ai/k,并使之字典序最大. 解:毒瘤线段树贪心... 以i/k为i的父亲构树. 当这n个数不同的时候,直接后序遍历贪心即可. 正解神奇的 ...

  8. P1558 色板游戏 线段树+二进制状压

    好,这个想法是我想拿去做HH的项链的.但是那个颜色有十万种...直接爆. 做这个倒是so easy 被两个地方坑了.1,a,b可能大小相反. 2,ask之前要down一波,我没down就挂了..... ...

  9. BellmanFord 最短路

    时间复杂度:O(VE) 最多循环V次,每次循环对每一条边(共E条边)判断是否可以进行松弛操作 最多V次:一个点的最短路,最多包含V-1个点(不包含该点), 如d1->d2->d3-> ...

  10. java用poi读取Excel表格中的数据

    Java读写Excel的包是Apache POI(项目地址:http://poi.apache.org/),因此需要先获取POI的jar包,本实验使用的是POI 3.9稳定版.Apache POI 代 ...