Canal AdminGuide_iteye_18983的博客-CSDN博客


本站和网页 https://blog.csdn.net/iteye_18983/article/details/82671817 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

Canal AdminGuide_iteye_18983的博客-CSDN博客
Canal AdminGuide
iteye_18983
于 2016-08-16 11:15:33 发布
1188
收藏
分类专栏:
opensource
文章标签:
canal
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/iteye_18983/article/details/82671817
版权
opensource
专栏收录该内容
1 篇文章
0 订阅
订阅专栏
背景
   先前开源了一个开源项目: 【阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费】 
   本文主要是介绍一下如何部署&使用
环境要求
1. 操作系统
    a.  纯java开发,windows/linux均可支持
    b.  jdk建议使用1.6.25以上的版本,稳定可靠,目前阿里巴巴使用基本为此版本. 
2. mysql要求
   a. 目前canal支持mysql 5.5版本以下,对mysql5.6暂不支持,(mysql4.x版本没有经过严格测试,理论上是可以兼容)
   b. canal的原理是基于mysql binlog技术,所以这里一定需要开启mysql的binlog写入功能,并且配置binlog模式为row.
Java代码  
[mysqld]    log-bin=mysql-bin #添加这一行就ok    binlog-format=ROW #选择row模式    server_id=1 #配置mysql replaction需要定义,不能和canal的slaveId重复    
   c.  canal的原理是模拟自己为mysql slave,所以这里一定需要做为mysql slave的相关权限 
Java代码  
CREATE USER canal IDENTIFIED BY 'canal';      GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';    -- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;    FLUSH PRIVILEGES;   
     针对已有的账户可通过grants查询权限:
Java代码  
show grants for 'canal'   
部署
1. 获取发布包
方法1: (直接下载)
访问:https://github.com/alibaba/canal/tree/gh-pages/download ,会列出所有历史的发布版本包
下载方式,比如以1.0.4版本为例子: 
Java代码  
wget https://raw.github.com/alibaba/canal/gh-pages/download/canal.deployer-1.0.4.tar.gz  
方法2:  (自己编译)
Java代码  
git clone git@github.com:alibaba/canal.git  git co canal-$version #切换到对应的版本上  mvn clean install -Denv=release  
执行完成后,会在canal工程根目录下生成一个target目录,里面会包含一个 canal.deployer-$verion.tar.gz
2. 目录结构
解压缩发布包后,可得如下目录结构:
Java代码  
drwxr-xr-x 2 jianghang jianghang  136 2013-03-19 15:03 bin  drwxr-xr-x 4 jianghang jianghang  160 2013-03-19 15:03 conf  drwxr-xr-x 2 jianghang jianghang 1352 2013-03-19 15:03 lib  drwxr-xr-x 2 jianghang jianghang   48 2013-03-19 15:03 logs  
3. 启动/停止
   linux启动 :   
Java代码  
sh startup.sh   
   linux带debug方式启动:(默认使用suspend=y,阻塞等待你remote debug链接成功)
Java代码  
sh startup.sh debug 9099  
   linux停止:
Java代码  
sh stop.sh  
       
  几点注意: 
linux启动完成后,会在bin目录下生成canal.pid,stop.sh会读取canal.pid进行进程关闭startup.sh默认读取系统环境变量中的which java获得JAVA执行路径,需要设置PATH=$JAVA_HOME/bin环境变量
-------------   
    windows启动:(windows支持相对比较弱)
Java代码  
startup.bat  
    windows停止:直接关闭终端即可
配置
介绍配置之前,先了解下canal的配置加载方式:
canal配置方式有两种:
ManagerCanalInstanceGenerator: 基于manager管理的配置方式,目前alibaba内部配置使用这种方式。大家可以实现CanalConfigClient,连接各自的管理系统,即可完成接入。SpringCanalInstanceGenerator:基于本地spring xml的配置方式,目前开源版本已经自带该功能所有代码,建议使用
Spring配置
spring配置的原理是将整个配置抽象为两部分:
xxxx-instance.xml   (canal组件的配置定义,可以在多个instance配置中共享)xxxx.properties   (每个instance通道都有各自一份定义,因为每个mysql的ip,帐号,密码等信息不会相同)
通过spring的PropertyPlaceholderConfigurer通过机制将其融合,生成一份instance实例对象,每个instance对应的组件都是相互独立的,互不影响
properties配置文件
properties配置分为两部分:
canal.properties  (系统根配置文件)instance.properties  (instance级别的配置文件,每个instance一份)
canal.properties介绍:
canal配置主要分为两部分定义:
1.   instance列表定义 (列出当前server上有多少个instance,每个instance的加载方式是spring/manager等)        
参数名字参数说明默认值canal.destinations当前server上部署的instance列表无canal.conf.dirconf/目录所在的路径../confcanal.auto.scan开启instance自动扫描如果配置为true,canal.conf.dir目录下的instance配置变化会自动触发:a. instance目录新增: 触发instance配置载入,lazy为true时则自动启动b. instance目录删除:卸载对应instance配置,如已启动则进行关闭c. instance.properties文件变化:reload instance配置,如已启动自动进行重启操作truecanal.auto.scan.intervalinstance自动扫描的间隔时间,单位秒5canal.instance.global.mode全局配置加载方式springcanal.instance.global.lazy全局lazy模式falsecanal.instance.global.manager.address全局的manager配置方式的链接信息无canal.instance.global.spring.xml全局的spring配置方式的组件文件classpath:spring/memory-instance.xml  (spring目录相对于canal.conf.dir)canal.instance.example.modecanal.instance.example.lazycanal.instance.example.spring.xml.....instance级别的配置定义,如有配置,会自动覆盖全局配置定义模式命名规则:canal.instance.{name}.xxx无
2.  common参数定义,比如可以将instance.properties的公用参数,抽取放置到这里,这样每个instance启动的时候就可以共享.  【instance.properties配置定义优先级高于canal.properties】
参数名字参数说明默认值canal.id每个canal server实例的唯一标识,暂无实际意义1canal.ipcanal server绑定的本地IP信息,如果不配置,默认选择一个本机IP进行启动服务无canal.portcanal server提供socket服务的端口11111canal.zkServerscanal server链接zookeeper集群的链接信息例子:10.20.144.22:2181,10.20.144.51:2181无canal.zookeeper.flush.periodcanal持久化数据到zookeeper上的更新频率,单位毫秒1000canal.instance.memory.batch.modecanal内存store中数据缓存模式1. ITEMSIZE : 根据buffer.size进行限制,只限制记录的数量2. MEMSIZE : 根据buffer.size  * buffer.memunit的大小,限制缓存记录的大小MEMSIZEcanal.instance.memory.buffer.sizecanal内存store中可缓存buffer记录数,需要为2的指数16384canal.instance.memory.buffer.memunit内存记录的单位大小,默认1KB,和buffer.size组合决定最终的内存使用大小1024canal.instance.transactionn.size最大事务完整解析的长度支持超过该长度后,一个事务可能会被拆分成多次提交到canal store中,无法保证事务的完整可见性1024canal.instance.fallbackIntervalInSecondscanal发生mysql切换时,在新的mysql库上查找binlog时需要往前查找的时间,单位秒说明:mysql主备库可能存在解析延迟或者时钟不统一,需要回退一段时间,保证数据不丢60canal.instance.detecting.enable是否开启心跳检查falsecanal.instance.detecting.sql心跳检查sqlinsert into retl.xdual values(1,now()) on duplicate key update x=now()canal.instance.detecting.interval.time心跳检查频率,单位秒3canal.instance.detecting.retry.threshold心跳检查失败重试次数3canal.instance.detecting.heartbeatHaEnable心跳检查失败后,是否开启自动mysql自动切换说明:比如心跳检查失败超过阀值后,如果该配置为true,canal就会自动链到mysql备库获取binlog数据falsecanal.instance.network.receiveBufferSize网络链接参数,SocketOptions.SO_RCVBUF16384canal.instance.network.sendBufferSize网络链接参数,SocketOptions.SO_SNDBUF16384canal.instance.network.soTimeout网络链接参数,SocketOptions.SO_TIMEOUT30
instance.properties介绍:
a. 在canal.properties定义了canal.destinations后,需要在canal.conf.dir对应的目录下建立同名的文件
比如:
Java代码  
canal.destinations = example1,example2  
 这时需要创建example1和example2两个目录,每个目录里各自有一份instance.properties.
 ps. canal自带了一份instance.properties demo,可直接复制conf/example目录进行配置修改
Java代码  
cp -R example example1/  cp -R example example2/  
b. 如果canal.properties未定义instance列表,但开启了canal.auto.scan时
server第一次启动时,会自动扫描conf目录下,将文件名做为instance name,启动对应的instanceserver运行过程中,会根据canal.auto.scan.interval定义的频率,进行扫描1. 发现目录有新增,启动新的instance2. 发现目录有删除,关闭老的instance3. 发现对应目录的instance.properties有变化,重启instance
一个标准的conf目录结果:
Java代码  
jianghang@jianghang-laptop:~/work/canal/deployer/target/canal$ ls -l conf/  总用量 8  -rwxrwxrwx 1 jianghang jianghang 1677 2013-03-19 15:03 canal.properties  ##系统配置  drwxr-xr-x 2 jianghang jianghang   88 2013-03-19 15:03 example  ## instance配置  -rwxrwxrwx 1 jianghang jianghang 1840 2013-03-19 15:03 logback.xml ## 日志文件  drwxr-xr-x 2 jianghang jianghang  168 2013-03-19 17:04 spring  ## spring instance莫把呢  
instance.properties参数列表:
参数名字参数说明默认值canal.instance.mysql.slaveIdmysql集群配置中的serverId概念,需要保证和当前mysql集群中id唯一1234canal.instance.master.addressmysql主库链接地址127.0.0.1:3306canal.instance.master.journal.namemysql主库链接时起始的binlog文件无canal.instance.master.positionmysql主库链接时起始的binlog偏移量无canal.instance.master.timestampmysql主库链接时起始的binlog的时间戳无canal.instance.dbUsernamemysql数据库帐号canalcanal.instance.dbPasswordmysql数据库密码canalcanal.instance.defaultDatabaseNamemysql链接时默认schema canal.instance.connectionCharsetmysql 数据解析编码UTF-8canal.instance.filter.regex mysql 数据解析关注的表,Perl正则表达式. 多个正则之间以逗号(,)分隔,转义符需要双斜杠(\\) 常见例子: 1.  所有表:.*   or  .*\\..*2.  canal schema下所有表: canal\\..*3.  canal下的以canal打头的表:canal\\.canal.*4.  canal schema下的一张表:canal.test1 5.  多个规则组合使用:canal\\..*,mysql.test1,mysql.test2 (逗号分隔) .*\\..*
几点说明:
1.  mysql链接时的起始位置
canal.instance.master.journal.name +  canal.instance.master.position :  精确指定一个binlog位点,进行启动canal.instance.master.timestamp :  指定一个时间戳,canal会自动遍历mysql binlog,找到对应时间戳的binlog位点后,进行启动不指定任何信息:默认从当前数据库的位点,进行启动。(show master status)
2. mysql解析关注表定义
标准的Perl正则,注意转义时需要双斜杠:\\
3. mysql链接的编码
目前canal版本仅支持一个数据库只有一种编码,如果一个库存在多个编码,需要通过filter.regex配置,将其拆分为多个canal instance,为每个instance指定不同的编码
instance.xml配置文件
目前默认支持的instance.xml有以下几种:
spring/memory-instance.xmlspring/default-instance.xmlspring/group-instance.xml
在介绍instance配置之前,先了解一下canal如何维护一份增量订阅&消费的关系信息:
解析位点 (parse模块会记录,上一次解析binlog到了什么位置,对应组件为:CanalLogPositionManager)消费位点 (canal server在接收了客户端的ack后,就会记录客户端提交的最后位点,对应的组件为:CanalMetaManager)
对应的两个位点组件,目前都有几种实现:
memory  (memory-instance.xml中使用)zookeepermixed  period   (default-instance.xml中使用,集合了zookeeper+memory模式,先写内存,定时刷新数据到zookeeper上)
-------------------
memory-instance.xml介绍:
   所有的组件(parser , sink , store)都选择了内存版模式,记录位点的都选择了memory模式,重启后又会回到初始位点进行解析 
   特点:速度最快,依赖最少(不需要zookeeper)
   场景:一般应用在quickstart,或者是出现问题后,进行数据分析的场景,不应该将其应用于生产环境
default-instance.xml介绍:
   所有的组件(parser , sink , store)都选择了持久化模式,目前持久化的方式主要是写入zookeeper,保证数据集群共享. 
   特点:支持HA
   场景:生产环境,集群化部署. 
group-instance.xml介绍:
    主要针对需要进行多库合并时,可以将多个物理instance合并为一个逻辑instance,提供客户端访问。
    场景:分库业务。 比如产品数据拆分了4个库,每个库会有一个instance,如果不用group,业务上要消费数据时,需要启动4个客户端,分别链接4个 instance实例。使用group后,可以在canal server上合并为一个逻辑instance,只需要启动1个客户端,链接这个逻辑instance即可. 
instance.xml设计初衷:
  允许进行自定义扩展,比如实现了基于数据库的位点管理后,可以自定义一份自己的instance.xml,整个canal设计中最大的灵活性在于此
HA模式配置
1.  机器准备
     a.  运行canal的机器: 10.20.144.22 , 10.20.144.51.
     b.  zookeeper地址为10.20.144.51:2181
     c.  mysql地址:10.20.144.15:3306
2.  按照部署和配置,在单台机器上各自完成配置,演示时instance name为example
   a. 修改canal.properties,加上zookeeper配置
Java代码  
canal.zkServers=10.20.144.51:2181  canal.instance.global.spring.xml = classpath:spring/default-instance.xml  
   b. 创建example目录,并修改instance.properties
Java代码  
canal.instance.mysql.slaveId = 1234 ##另外一台机器改成1235,保证slaveId不重复即可  canal.instance.master.address = 10.20.144.15:3306  
   
    注意: 两台机器上的instance目录的名字需要保证完全一致,HA模式是依赖于instance name进行管理,同时必须都选择default-instance.xml配置
3.  启动两台机器的canal
Java代码  
-------  ssh 10.20.144.51  sh bin/startup.sh  --------  ssh 10.20.144.22  sh bin/startup.sh  
 启动后,你可以查看logs/example/example.log,只会看到一台机器上出现了启动成功的日志。
   
  比如我这里启动成功的是10.20.144.51
Java代码  
2013-03-19 18:18:20.590 [main] INFO  c.a.o.c.i.spring.support.PropertyPlaceholderConfigurer - Loading properties file from class path resource [canal.properties]  2013-03-19 18:18:20.596 [main] INFO  c.a.o.c.i.spring.support.PropertyPlaceholderConfigurer - Loading properties file from class path resource [example/instance.properties]  2013-03-19 18:18:20.831 [main] INFO  c.a.otter.canal.instance.spring.CanalInstanceWithSpring - start CannalInstance for 1-example   2013-03-19 18:18:20.845 [main] INFO  c.a.otter.canal.instance.spring.CanalInstanceWithSpring - start successful...  
    
   查看一下zookeeper中的节点信息,也可以知道当前工作的节点为10.20.144.51:11111
Java代码  
[zk: localhost:2181(CONNECTED) 15] get /otter/canal/destinations/example/running    {"active":true,"address":"10.20.144.51:11111","cid":1}  
4.  客户端链接, 消费数据
    a.  可以直接指定zookeeper地址和instance name,canal client会自动从zookeeper中的running节点,获取当前服务的工作节点,然后与其建立链接:
Java代码  
CanalConnector connector = CanalConnectors.newClusterConnector("10.20.144.51:2181", "example", "", "");  
    b. 链接成功后,canal server会记录当前正在工作的canal client信息,比如客户端ip,链接的端口信息等 (聪明的你,应该也可以发现,canal client也可以支持HA功能)
Java代码  
[zk: localhost:2181(CONNECTED) 17] get /otter/canal/destinations/example/1001/running  {"active":true,"address":"10.12.48.171:50544","clientId":1001}  
    c. 数据消费成功后,canal server会在zookeeper中记录下当前最后一次消费成功的binlog位点.  (下次你重启client时,会从这最后一个位点继续进行消费)
Java代码  
[zk: localhost:2181(CONNECTED) 16] get /otter/canal/destinations/example/1001/cursor  {"@type":"com.alibaba.otter.canal.protocol.position.LogPosition","identity":{"slaveId":-1,"sourceAddress":{"address":"10.20.144.15","port":3306}},"postion":{"included":false,"journalName":"mysql-bin.002253","position":2574756,"timestamp":1363688722000}}  
5.  重启一下canal server
    停止正在工作的10.20.144.51的canal server
Java代码  
ssh 10.20.144.51   sh bin/stop.sh  
   这时10.20.144.22会立马启动example instance,提供新的数据服务
Java代码  
[zk: localhost:2181(CONNECTED) 19] get /otter/canal/destinations/example/running  {"active":true,"address":"10.20.144.22:11111","cid":1}  
   与此同时,客户端也会随着canal server的切换,通过获取zookeeper中的最新地址,与新的canal server建立链接,继续消费数据,整个过程自动完成
触发HA自动切换场景 (server/client HA模式都有效)
1. 正常场景
    a.  正常关闭canal server(会释放instance的所有资源,包括删除running节点)
    b.  平滑切换(gracefully)
         操作:更新对应instance的running节点内容,将"active"设置为false,对应的running节点收到消息后,会主动释放running节点,让出控制权但自己jvm不退出,gracefully. 
Java代码  
{"active":false,"address":"10.20.144.22:11111","cid":1}  
2.  异常场景
   a.  canal server对应的jvm异常crash,running节点的释放会在对应的zookeeper session失效后,释放running节点(EPHEMERAL节点)
       ps. session过期时间默认为zookeeper配置文件中定义的tickTime的20倍,如果不改动zookeeper配置,那默认就是40秒
   b.  canal server所在的网络出现闪断,导致zookeeper认为session失效,释放了running节点,此时canal server对应的jvm并未退出,(一种假死状态,非常特殊的情况)
      ps. 为了保护假死状态的canal server,避免因瞬间runing失效导致instance重新分布,所以做了一个策略:canal server在收到running节点释放后,延迟一段时间抢占running,原本running节点的拥有者可以不需要等待延迟,优先取得 running节点,可以保证假死状态下尽可能不无谓的释放资源。 目前延迟时间的默认值为5秒,即running节点针对假死状态的保护期为5秒. 
mysql多节点解析配置(parse解析自动切换)
1.  mysql机器准备
     准备两台mysql机器,配置为M-M模式,比如ip为:10.20.144.25:3306,10.20.144.29:3306
Java代码  
[mysqld]   xxxxx ##其他正常master/slave配置  log_slave_updates=true ##这个配置一定要打开  
2.  canal instance配置
Java代码  
# position info  canal.instance.master.address = 10.20.144.25:3306  canal.instance.master.journal.name =   canal.instance.master.position =   canal.instance.master.timestamp =     canal.instance.standby.address = 10.20.144.29:3306  canal.instance.standby.journal.name =  canal.instance.standby.position =   canal.instance.standby.timestamp =    ## detecing config  canal.instance.detecting.enable = true ## 需要开启心跳检查  canal.instance.detecting.sql = insert into retl.xdual values(1,now()) on duplicate key update x=now() ##心跳检查sql,也可以选择类似select 1的query语句  canal.instance.detecting.interval.time = 3 ##心跳检查频率  canal.instance.detecting.retry.threshold = 3  ## 心跳检查失败次数阀值,超过该阀值后会触发mysql链接切换,比如切换到standby机器上继续消费binlog  canal.instance.detecting.heartbeatHaEnable = true ## 心跳检查超过失败次数阀值后,是否开启master/standby的切换.   
注意:
    a.  填写master/standby的地址和各自的起始binlog位置,目前配置只支持一个standby配置.  
    b.  发生master/standby的切换的条件:(heartbeatHaEnable = true) && (失败次数>=retry.threshold). 
    c. 多引入一个heartbeatHaEnable的考虑:开启心跳sql有时候是为client检测canal server是否正常工作,如果定时收到了心跳语句,那说明整个canal server工作正常
3.  启动 & 测试
    比如关闭一台机器的mysql , /etc/init.d/mysql stop 。在经历大概  interval.time * retry.threshold时间后,就会切换到standby机器上
最后
 canal项目: https://github.com/alibaba/canal
 adminGuide : https://github.com/alibaba/canal/wiki/AdminGuide
转自:http://agapple.iteye.com/blog/1831873
iteye_18983
关注
关注
点赞
收藏
打赏
评论
Canal AdminGuide
背景   先前开源了一个开源项目: 【阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费】    本文主要是介绍一下如何部署&使用 环境要求1. 操作系统    a.  纯java开发,windows/linux均可支持    b.  jdk建议使用1.6.25以上的版本,稳定可靠,目前阿里巴巴使用基本为此版本.  2. my...
复制链接
扫一扫
专栏目录
canal--介绍/使用/配置
IT利刃出鞘的博客
04-19
1468
其他网址
Canal AdminGuide - agapple - ITeye博客
简介
canal官网
https://github.com/alibaba/canalhttps://github.com/alibaba/canal/wiki
canal原理
canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump...
【Canal】canal简介
最新发布
qq_41466440的博客
11-04
236
【Canal】canal简介
参与评论
您还未登录,请先
登录
后发表或查看评论
canal全量日志获取过程可能遇到的canal.instance.master.journal.name未起作用
jing2211728的博客
03-30
3749
canal使用过程中全量日志的使用
在使用canal进行数据库日志获取的时候,第一次获取需要获取全量日志。在instance.properties中是可以进行配置的。其中canal.instance.master.journal.name
canal.instance.master.position
canal.instance.master.timestamp几个属性可以控制获取日志时候的起始位...
canal部署与实例运行
在路上
11-25
2495
1、准备:
github:https://github.com/alibaba/canal
里面有包括canal的文档,server端 client端的 例子 源码包等等。
2、canal概述:
canal是应阿里巴巴存在杭州和美国的双机房部署,存在跨机房同步的业务需求而提出的。
早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求。不过早期
【最佳实践】canal与binlog的关系
weixin_39394909的博客
09-18
232
canal版本1.1.4
经过验证
在实例的instance.properties的
canal.instance.master.journal.name=mysql-bin.002851
canal.instance.master.position=167158844
meta.dat的内容如下
{"clientDatas":[{"clientIdentity":{"clientId":1001,"destination":"example","filter":""},"cursor":{"
canal 配置文件介绍
刘军的博客
09-06
1942
CANAL 的配置方式有两种:
ManagerCanalInstanceGenerator: 基于manager管理的配置方式,目前alibaba内部配置使用这种方式。大家可以实现CanalConfigClient,连接各自的管理系统,即可完成接入
SpringCanalInstanceGenerator:基于本地spring xml的配置方式,目前开源版本已经自带该功能所有代码,建议使...
Canal注意点
weixin_34113237的博客
03-11
105
2019独角兽企业重金招聘Python工程师标准>>>
...
canal系列—配置文件介绍
此博客已停用,博文会逐渐转移到新地址,http://blog.csdn.net/liupeifeng3514
12-13
1万+
canal的配置加载方式介绍配置之前,先了解下canal的配置加载方式: canal配置方式有两种:
ManagerCanalInstanceGenerator: 基于manager管理的配置方式,目前alibaba内部配置使用这种方式。大家可以实现CanalConfigClient,连接各自的管理系统,即可完成接入。
SpringCanalInstanceGenerator:基于本地spring
canal入门,看这一篇就够了。
爪哇干货分享
09-04
610
整体结构
前言
我们在日常的开发中,为了业务查询以及业务实现的需要,不单止要保存在数据库中,还要同步保存到Elastic Search、HBase、Redis、MQ等等。
这时我注意到阿里开源的框架「Canal」,他可以很方便地「同步数据库的增量数据到其他的存储应用」。
什么是Canal
**canal [kə'næl]**,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费
早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是
Canal笔记
bird0211的博客
11-19
2982
Canal使用什么是Canal
简单来说Canal是用于读取binlog日志的工具(太简单了)。
如果需要对数据做同步,可以使用canal。
安装Canal准备工作binlog:开通binlog日志,以及canal用户
python
[mysqld]
log-bin=mysql-bin #添加这一行就ok
binlog-format=ROW #选择row模式
server_id=
canal使用配置详解
liyonghui123的专栏
01-15
3973
a. canal的原理是基于mysql binlog技术,所以这里一定需要开启mysql的binlog写入功能,并且配置binlog模式为row.
[mysqld]
log-bin=mysql-bin #添加这一行就ok
binlog-format=ROW #选择row模式
server_id=1 #配置mysql replaction需要定义...
基于Canal的同步缓存
爱我所爱0505
01-07
569
目录
一、Canal介绍
二、MySQL主从配置
1. 进入docker的mysql容器
2.进入mysql配置
3.编辑my.cnf
4.重启mysql服务和容器
5.创建同步用户
三、Canal服务端
1.解压文件
2. 配置监听数据库
3.配置Canal
4.启动Canal服务器
四、Canal客户端
1. 依赖Jar包
2.CanalClient
五、参考资料
一、Canal介绍
Canal是阿里开源的基于MySQL数据库binlo...
Canal原理介绍及安装详解
qq_654603797
07-01
205
Canal简介
概述:
​canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB)。
背景:
早期的数据库同步业务,主要是基于trigger的方式获取增量变更。从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务,从此开启了一段新纪元。
基于日志增量订阅&消费支持的业务:
数据库镜像
数据库实时备份
搭建: canal部署与实例运行
热门推荐
心之所向,无惧无悔!
07-18
7万+
1、准备:
github:https://github.com/alibaba/canal
里面有包括server端 client端的 例子
mysql+canal+rabbitMq+SpringCloud 实现数据库数据同步监听
u011232863的博客
09-08
3449
前言
项目开发中,数据同步一直是一个令人头疼的问题。在业务量小,场景不多,数据量不大的情况下我们可能会选择在项目中直接写一些定时任务手动处理数据,例如从多个表将数据查出来,再汇总处理,再插入到相应的地方。但是随着业务量增大,数据量变多以及各种复杂场景下的分库分表的实现,使数据同步变得越来越困难。
以前用过阿里的Datax,一款离线数据同步工具,通过在项目中定时调用指定的shell脚本,来实现在各种异构数据源之间的数据同步。刚好最近又用到了阿里的canal,于是就抱着学习的态度在本地搭了一套模拟环境。虽然网上
聊一聊canal
weixin_42274449的博客
08-10
103
canal 工作原理:
canal 主要作用是 模拟数据库的 主从 协议 依据 binlog 来监控数据
mysql的Binlay Log介绍
(http://dev.mysql.com/doc/refman/5.5/en/binary-log.html)
(http://www.taobaodba.com/html/474_mysqls-binary-log_details.html)
例如mysql slave , 有兴趣的可以去了解,
今天我们来聊聊 canal HA 机制 怎么用canal 实现
Canal服务端单机版搭建
程序员小强的博客
01-17
5725
1.前置准备
1.1检查是否开启binlog
查看binlog相关数据库命令
是否启用了日志
show variables like 'log_bin';
怎样知道当前的日志
show master status;
查看mysql binlog模式
show variables like 'binlog_format';
获取binlog文件列表
show binary logs;
查看当前正在写入的binlog文件
show master status\G
查看指定binlog文件的内容
show bin
elasticsearch和mysql数据同步, 基于canal, canal-server和canal-adapter
Le_OOP的博客
05-12
755
elasticsearch和mysql数据同步, 基于canal, canal-server和canal-adapter
canal构建实时索引(两种方式adapter与springboot)
镜水灵动
02-01
1808
一.canal概述与安装
1.1 简述
canal模拟mysql slave交互协议,伪装成mysql一个从节点,向mysql master发送dump协议,mysql master收到dump请求之后,开始推送binary log 给slave。canal解析binary log对象即byte流。
1.2 安装
1.2.1 canal.deployer安装
(1)开启mysql bi...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
iteye_18983
CSDN认证博客专家
CSDN认证企业博客
码龄4年
暂无认证
40
原创
周排名
138万+
总排名
2万+
访问
等级
190
积分
粉丝
获赞
评论
27
收藏
私信
关注
热门文章
EncodeUtil(各种格式的编码解码工具类)
2333
mac os x使用brew安装subversion
2279
mongodb_查询器($in/$lt/$lte/$gt/$gte/$ne/......)
1942
中航信E-Build基础API使用实例
1484
Canal AdminGuide
1188
分类专栏
SolrCloud
4篇
IO流
3篇
Solr
6篇
API
1篇
框架必不可少的Util工具
5篇
开发工具
1篇
Maven
2篇
谈生活,谈技术,谈梦想
3篇
Pinyin4j
1篇
Web前端
1篇
SQL
3篇
Thread
2篇
Lucene
2篇
memcached
2篇
MySQL
1篇
搜索开发
1篇
log4j
4篇
session
1篇
MongoDB
4篇
架构
2篇
消息队列
4篇
在线工具
1篇
Dubbo
1篇
opensource
1篇
云计算
1篇
Java(j2se)
1篇
mac
2篇
最新评论
中航信E-Build基础API使用实例
qq_16382267:
我的qq:1130683008,看到后请联系我,我想买你的代码
中航信E-Build基础API使用实例
qq_16382267:
你好有可以加我qq吗?我想买你这段代码,价格可以商量
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
mac os x使用brew安装subversion
mac os x套件管理器Homebrew
SQL优化—SQL查询效率,100w数据,查询只要1秒
2017年4篇
2016年25篇
2015年2篇
2014年30篇
目录
目录
分类专栏
SolrCloud
4篇
IO流
3篇
Solr
6篇
API
1篇
框架必不可少的Util工具
5篇
开发工具
1篇
Maven
2篇
谈生活,谈技术,谈梦想
3篇
Pinyin4j
1篇
Web前端
1篇
SQL
3篇
Thread
2篇
Lucene
2篇
memcached
2篇
MySQL
1篇
搜索开发
1篇
log4j
4篇
session
1篇
MongoDB
4篇
架构
2篇
消息队列
4篇
在线工具
1篇
Dubbo
1篇
opensource
1篇
云计算
1篇
Java(j2se)
1篇
mac
2篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
iteye_18983
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值