精华帖 (5) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2013-03-13
kongshanxuelin 写道 实际应用中碰到一个问题:当client关掉时,再次期间内的增量数据,在client重新启动后,这些增量数据不会通知到client?
对了,我给的那个sample例子的配置是不能做到重新通知的 因为quick start的那份配置,是基于memory模式保存上一次binlog消费的位置,一旦你重启或者客户端断开,位置信息就会丢失,然后就会继续从当前binlog的最新位置给你消费。 如果你要使用可以持久化binlog位置信息的功能,需要修改 canal.properties文件 #canal.instance.global.spring.xml = classpath:spring/memory-instance.xml canal.instance.global.spring.xml = classpath:spring/default-instance.xml 使用default-instance.xml模式,但这个模式目前需要依赖一个zookeeper环境。 最近比较忙,这块详细的AdminGuide/DevGuide文档还没补上,如果有问题,可以给我留言 |
|
返回顶楼 | |
发表时间:2013-03-13
或者可以考虑实现一份基于本地File存储binlog位置信息,这样可以不依赖zookeeper,我记录一个issue,等空点了就实现一把
|
|
返回顶楼 | |
发表时间:2013-03-13
agapple 写道 或者可以考虑实现一份基于本地File存储binlog位置信息,这样可以不依赖zookeeper,我记录一个issue,等空点了就实现一把
有没有详细一点的文档啊?如果基于内存,就比较悲剧,我现在只能捕获一下client的断开连接的信号,然后去重启,因为我要用在一个实时性要求很高但可靠性要求不那么高的场合,所以凑合着先用,不过最好能给出一点详细文档,比如如何扩展,这简单一句确实让人莫捕捉头脑啊 |
|
返回顶楼 | |
发表时间:2013-03-13
最后修改:2013-03-13
agapple 写道 kongshanxuelin 写道 实际应用中碰到一个问题:当client关掉时,再次期间内的增量数据,在client重新启动后,这些增量数据不会通知到client?
对了,我给的那个sample例子的配置是不能做到重新通知的 因为quick start的那份配置,是基于memory模式保存上一次binlog消费的位置,一旦你重启或者客户端断开,位置信息就会丢失,然后就会继续从当前binlog的最新位置给你消费。 如果你要使用可以持久化binlog位置信息的功能,需要修改 canal.properties文件 #canal.instance.global.spring.xml = classpath:spring/memory-instance.xml canal.instance.global.spring.xml = classpath:spring/default-instance.xml 使用default-instance.xml模式,但这个模式目前需要依赖一个zookeeper环境。 最近比较忙,这块详细的AdminGuide/DevGuide文档还没补上,如果有问题,可以给我留言 怎么配?什么版本?望回复! |
|
返回顶楼 | |
发表时间:2013-03-13
kongshanxuelin 写道 agapple 写道 kongshanxuelin 写道 实际应用中碰到一个问题:当client关掉时,再次期间内的增量数据,在client重新启动后,这些增量数据不会通知到client?
对了,我给的那个sample例子的配置是不能做到重新通知的 因为quick start的那份配置,是基于memory模式保存上一次binlog消费的位置,一旦你重启或者客户端断开,位置信息就会丢失,然后就会继续从当前binlog的最新位置给你消费。 如果你要使用可以持久化binlog位置信息的功能,需要修改 canal.properties文件 #canal.instance.global.spring.xml = classpath:spring/memory-instance.xml canal.instance.global.spring.xml = classpath:spring/default-instance.xml 使用default-instance.xml模式,但这个模式目前需要依赖一个zookeeper环境。 最近比较忙,这块详细的AdminGuide/DevGuide文档还没补上,如果有问题,可以给我留言 怎么配?什么版本?望回复! 最新稳定版本: https://raw.github.com/alibaba/canal/gh-pages/download/canal.deployer-1.0.2.tar.gz 配置带存储的步骤: 1. 下载zookeeper,搭建zookeeper环境 建议用zookeeper 3.4.5稳定版本,官方文档:http://zookeeper.apache.org/doc/r3.4.5/zookeeperAdmin.html 至于如何搭建我就不细说了,网上一搜一大把 2. 下载canal版本,最新是1.0.2版本,刚发布 (目前我们自己在用主要也就这版本) 3. 部署canal a. 解压缩 mkdir canal tar canal.deployer-1.0.2.tar.gz -C canal b. 修改配置文件 vi conf/canal.properties 主要修改2点: canal.zkServers=10.20.144.22:2181,10.20.144.51:2181 ##填上你第一步搭建的zookeeper环境地址 #canal.instance.global.spring.xml = classpath:spring/memory-instance.xml canal.instance.global.spring.xml = classpath:spring/default-instance.xml 默认为memory,注意屏蔽掉,前面加个#号,然后放开default-instance.xml的配置,去掉前面的#号 其他的instance.properties配置,请参考我的quickstart中的配置,https://github.com/alibaba/canal/wiki/QuickStart 4. 启动. 5. 客户端链接 客户端发生了数据消费后,canal server会在zookeeper上记录相应的消费位点,下次重新启动时就可以继续上一次位点,不会发生数据丢失. [zk: localhost:2181(CONNECTED) 0] 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.002072","position":58682700,"timestamp":1363173461000}} 如有问题,请及时联系 |
|
返回顶楼 | |
发表时间:2013-03-14
最后修改:2013-03-14
agapple 写道 kongshanxuelin 写道 agapple 写道 kongshanxuelin 写道 实际应用中碰到一个问题:当client关掉时,再次期间内的增量数据,在client重新启动后,这些增量数据不会通知到client?
对了,我给的那个sample例子的配置是不能做到重新通知的 因为quick start的那份配置,是基于memory模式保存上一次binlog消费的位置,一旦你重启或者客户端断开,位置信息就会丢失,然后就会继续从当前binlog的最新位置给你消费。 如果你要使用可以持久化binlog位置信息的功能,需要修改 canal.properties文件 #canal.instance.global.spring.xml = classpath:spring/memory-instance.xml canal.instance.global.spring.xml = classpath:spring/default-instance.xml 使用default-instance.xml模式,但这个模式目前需要依赖一个zookeeper环境。 最近比较忙,这块详细的AdminGuide/DevGuide文档还没补上,如果有问题,可以给我留言 怎么配?什么版本?望回复! 最新稳定版本: https://raw.github.com/alibaba/canal/gh-pages/download/canal.deployer-1.0.2.tar.gz 配置带存储的步骤: 1. 下载zookeeper,搭建zookeeper环境 建议用zookeeper 3.4.5稳定版本,官方文档:http://zookeeper.apache.org/doc/r3.4.5/zookeeperAdmin.html 至于如何搭建我就不细说了,网上一搜一大把 2. 下载canal版本,最新是1.0.2版本,刚发布 (目前我们自己在用主要也就这版本) 3. 部署canal a. 解压缩 mkdir canal tar canal.deployer-1.0.2.tar.gz -C canal b. 修改配置文件 vi conf/canal.properties 主要修改2点: canal.zkServers=10.20.144.22:2181,10.20.144.51:2181 ##填上你第一步搭建的zookeeper环境地址 #canal.instance.global.spring.xml = classpath:spring/memory-instance.xml canal.instance.global.spring.xml = classpath:spring/default-instance.xml 默认为memory,注意屏蔽掉,前面加个#号,然后放开default-instance.xml的配置,去掉前面的#号 其他的instance.properties配置,请参考我的quickstart中的配置,https://github.com/alibaba/canal/wiki/QuickStart 4. 启动. 5. 客户端链接 客户端发生了数据消费后,canal server会在zookeeper上记录相应的消费位点,下次重新启动时就可以继续上一次位点,不会发生数据丢失. [zk: localhost:2181(CONNECTED) 0] 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.002072","position":58682700,"timestamp":1363173461000}} 如有问题,请及时联系 感谢,可以了:),我们也有很多跨机房的实时同步数据的需求,以前都是用JMS做的,先小范围内试用一下,觉得可以的话,以后就用你这个做数据同步了,alibaba在java开源方面还是做的相当不错的:) |
|
返回顶楼 | |
发表时间:2013-03-14
kongshanxuelin 写道 agapple 写道 kongshanxuelin 写道 agapple 写道 kongshanxuelin 写道 实际应用中碰到一个问题:当client关掉时,再次期间内的增量数据,在client重新启动后,这些增量数据不会通知到client?
对了,我给的那个sample例子的配置是不能做到重新通知的 因为quick start的那份配置,是基于memory模式保存上一次binlog消费的位置,一旦你重启或者客户端断开,位置信息就会丢失,然后就会继续从当前binlog的最新位置给你消费。 如果你要使用可以持久化binlog位置信息的功能,需要修改 canal.properties文件 #canal.instance.global.spring.xml = classpath:spring/memory-instance.xml canal.instance.global.spring.xml = classpath:spring/default-instance.xml 使用default-instance.xml模式,但这个模式目前需要依赖一个zookeeper环境。 最近比较忙,这块详细的AdminGuide/DevGuide文档还没补上,如果有问题,可以给我留言 怎么配?什么版本?望回复! 最新稳定版本: https://raw.github.com/alibaba/canal/gh-pages/download/canal.deployer-1.0.2.tar.gz 配置带存储的步骤: 1. 下载zookeeper,搭建zookeeper环境 建议用zookeeper 3.4.5稳定版本,官方文档:http://zookeeper.apache.org/doc/r3.4.5/zookeeperAdmin.html 至于如何搭建我就不细说了,网上一搜一大把 2. 下载canal版本,最新是1.0.2版本,刚发布 (目前我们自己在用主要也就这版本) 3. 部署canal a. 解压缩 mkdir canal tar canal.deployer-1.0.2.tar.gz -C canal b. 修改配置文件 vi conf/canal.properties 主要修改2点: canal.zkServers=10.20.144.22:2181,10.20.144.51:2181 ##填上你第一步搭建的zookeeper环境地址 #canal.instance.global.spring.xml = classpath:spring/memory-instance.xml canal.instance.global.spring.xml = classpath:spring/default-instance.xml 默认为memory,注意屏蔽掉,前面加个#号,然后放开default-instance.xml的配置,去掉前面的#号 其他的instance.properties配置,请参考我的quickstart中的配置,https://github.com/alibaba/canal/wiki/QuickStart 4. 启动. 5. 客户端链接 客户端发生了数据消费后,canal server会在zookeeper上记录相应的消费位点,下次重新启动时就可以继续上一次位点,不会发生数据丢失. [zk: localhost:2181(CONNECTED) 0] 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.002072","position":58682700,"timestamp":1363173461000}} 如有问题,请及时联系 感谢,可以了:),我们也有很多跨机房的实时同步数据的需求,以前都是用JMS做的,先小范围内试用一下,觉得可以的话,以后就用你这个做数据同步了,alibaba在java开源方面还是做的相当不错的:) 多谢支持,目前canal支持mysql解析会有些限制,具体issue: https://github.com/alibaba/canal/issues/10 避免的操作: 1. 业务操作避免带删除性质的ddl,比如字段删除,rename table , drop table 2. 业务操作避免添加字段时调整顺序,只能添加到末尾. 如果真不可避免出现出现上述操作中的情况,只要不回退canal解析位置,就可以正常往下解析,不会出现数据错乱. 不过需要考虑:当canal解析延迟比较大,此时进行带删除性质的ddl操作,待解析的binlog中还存在对应ddl的表数据,那还是会出现问题。(尽可能选择合适的时间进行ddl操作) -------------------- 华丽的分割线 目前canal只是解决了数据的增量变更获取,后面有一个专门的产品otter,解决数据库同步的问题。 目前支持的数据库同步: 1. 单向同步 2. 双向同步 3. 双A同步 双A和双向的区别,双A会在两地同一时间,修改同一条记录,目前otter可以保证双A机房的数据最终一致性 |
|
返回顶楼 | |
发表时间:2013-03-15
agapple 写道 kongshanxuelin 写道 agapple 写道 kongshanxuelin 写道 agapple 写道 kongshanxuelin 写道 实际应用中碰到一个问题:当client关掉时,再次期间内的增量数据,在client重新启动后,这些增量数据不会通知到client?
对了,我给的那个sample例子的配置是不能做到重新通知的 因为quick start的那份配置,是基于memory模式保存上一次binlog消费的位置,一旦你重启或者客户端断开,位置信息就会丢失,然后就会继续从当前binlog的最新位置给你消费。 如果你要使用可以持久化binlog位置信息的功能,需要修改 canal.properties文件 #canal.instance.global.spring.xml = classpath:spring/memory-instance.xml canal.instance.global.spring.xml = classpath:spring/default-instance.xml 使用default-instance.xml模式,但这个模式目前需要依赖一个zookeeper环境。 最近比较忙,这块详细的AdminGuide/DevGuide文档还没补上,如果有问题,可以给我留言 怎么配?什么版本?望回复! 最新稳定版本: https://raw.github.com/alibaba/canal/gh-pages/download/canal.deployer-1.0.2.tar.gz 配置带存储的步骤: 1. 下载zookeeper,搭建zookeeper环境 建议用zookeeper 3.4.5稳定版本,官方文档:http://zookeeper.apache.org/doc/r3.4.5/zookeeperAdmin.html 至于如何搭建我就不细说了,网上一搜一大把 2. 下载canal版本,最新是1.0.2版本,刚发布 (目前我们自己在用主要也就这版本) 3. 部署canal a. 解压缩 mkdir canal tar canal.deployer-1.0.2.tar.gz -C canal b. 修改配置文件 vi conf/canal.properties 主要修改2点: canal.zkServers=10.20.144.22:2181,10.20.144.51:2181 ##填上你第一步搭建的zookeeper环境地址 #canal.instance.global.spring.xml = classpath:spring/memory-instance.xml canal.instance.global.spring.xml = classpath:spring/default-instance.xml 默认为memory,注意屏蔽掉,前面加个#号,然后放开default-instance.xml的配置,去掉前面的#号 其他的instance.properties配置,请参考我的quickstart中的配置,https://github.com/alibaba/canal/wiki/QuickStart 4. 启动. 5. 客户端链接 客户端发生了数据消费后,canal server会在zookeeper上记录相应的消费位点,下次重新启动时就可以继续上一次位点,不会发生数据丢失. [zk: localhost:2181(CONNECTED) 0] 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.002072","position":58682700,"timestamp":1363173461000}} 如有问题,请及时联系 感谢,可以了:),我们也有很多跨机房的实时同步数据的需求,以前都是用JMS做的,先小范围内试用一下,觉得可以的话,以后就用你这个做数据同步了,alibaba在java开源方面还是做的相当不错的:) 多谢支持,目前canal支持mysql解析会有些限制,具体issue: https://github.com/alibaba/canal/issues/10 避免的操作: 1. 业务操作避免带删除性质的ddl,比如字段删除,rename table , drop table 2. 业务操作避免添加字段时调整顺序,只能添加到末尾. 如果真不可避免出现出现上述操作中的情况,只要不回退canal解析位置,就可以正常往下解析,不会出现数据错乱. 不过需要考虑:当canal解析延迟比较大,此时进行带删除性质的ddl操作,待解析的binlog中还存在对应ddl的表数据,那还是会出现问题。(尽可能选择合适的时间进行ddl操作) -------------------- 华丽的分割线 目前canal只是解决了数据的增量变更获取,后面有一个专门的产品otter,解决数据库同步的问题。 目前支持的数据库同步: 1. 单向同步 2. 双向同步 3. 双A同步 双A和双向的区别,双A会在两地同一时间,修改同一条记录,目前otter可以保证双A机房的数据最终一致性 我们面临的最大问题就是增量数据同步,以前用JMS,不知道是不是本身写的程序问题,增量数据会莫名其妙的丢失导致一些脏数据(基础数据问题会引起最终算法结果有偏差),先试用一下你这个东东看看,运行一段时间看看效果吧 |
|
返回顶楼 | |
发表时间:2013-03-16
kongshanxuelin 写道 agapple 写道 kongshanxuelin 写道 agapple 写道 kongshanxuelin 写道 agapple 写道 kongshanxuelin 写道 实际应用中碰到一个问题:当client关掉时,再次期间内的增量数据,在client重新启动后,这些增量数据不会通知到client?
对了,我给的那个sample例子的配置是不能做到重新通知的 因为quick start的那份配置,是基于memory模式保存上一次binlog消费的位置,一旦你重启或者客户端断开,位置信息就会丢失,然后就会继续从当前binlog的最新位置给你消费。 如果你要使用可以持久化binlog位置信息的功能,需要修改 canal.properties文件 #canal.instance.global.spring.xml = classpath:spring/memory-instance.xml canal.instance.global.spring.xml = classpath:spring/default-instance.xml 使用default-instance.xml模式,但这个模式目前需要依赖一个zookeeper环境。 最近比较忙,这块详细的AdminGuide/DevGuide文档还没补上,如果有问题,可以给我留言 怎么配?什么版本?望回复! 最新稳定版本: https://raw.github.com/alibaba/canal/gh-pages/download/canal.deployer-1.0.2.tar.gz 配置带存储的步骤: 1. 下载zookeeper,搭建zookeeper环境 建议用zookeeper 3.4.5稳定版本,官方文档:http://zookeeper.apache.org/doc/r3.4.5/zookeeperAdmin.html 至于如何搭建我就不细说了,网上一搜一大把 2. 下载canal版本,最新是1.0.2版本,刚发布 (目前我们自己在用主要也就这版本) 3. 部署canal a. 解压缩 mkdir canal tar canal.deployer-1.0.2.tar.gz -C canal b. 修改配置文件 vi conf/canal.properties 主要修改2点: canal.zkServers=10.20.144.22:2181,10.20.144.51:2181 ##填上你第一步搭建的zookeeper环境地址 #canal.instance.global.spring.xml = classpath:spring/memory-instance.xml canal.instance.global.spring.xml = classpath:spring/default-instance.xml 默认为memory,注意屏蔽掉,前面加个#号,然后放开default-instance.xml的配置,去掉前面的#号 其他的instance.properties配置,请参考我的quickstart中的配置,https://github.com/alibaba/canal/wiki/QuickStart 4. 启动. 5. 客户端链接 客户端发生了数据消费后,canal server会在zookeeper上记录相应的消费位点,下次重新启动时就可以继续上一次位点,不会发生数据丢失. [zk: localhost:2181(CONNECTED) 0] 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.002072","position":58682700,"timestamp":1363173461000}} 如有问题,请及时联系 感谢,可以了:),我们也有很多跨机房的实时同步数据的需求,以前都是用JMS做的,先小范围内试用一下,觉得可以的话,以后就用你这个做数据同步了,alibaba在java开源方面还是做的相当不错的:) 多谢支持,目前canal支持mysql解析会有些限制,具体issue: https://github.com/alibaba/canal/issues/10 避免的操作: 1. 业务操作避免带删除性质的ddl,比如字段删除,rename table , drop table 2. 业务操作避免添加字段时调整顺序,只能添加到末尾. 如果真不可避免出现出现上述操作中的情况,只要不回退canal解析位置,就可以正常往下解析,不会出现数据错乱. 不过需要考虑:当canal解析延迟比较大,此时进行带删除性质的ddl操作,待解析的binlog中还存在对应ddl的表数据,那还是会出现问题。(尽可能选择合适的时间进行ddl操作) -------------------- 华丽的分割线 目前canal只是解决了数据的增量变更获取,后面有一个专门的产品otter,解决数据库同步的问题。 目前支持的数据库同步: 1. 单向同步 2. 双向同步 3. 双A同步 双A和双向的区别,双A会在两地同一时间,修改同一条记录,目前otter可以保证双A机房的数据最终一致性 我们面临的最大问题就是增量数据同步,以前用JMS,不知道是不是本身写的程序问题,增量数据会莫名其妙的丢失导致一些脏数据(基础数据问题会引起最终算法结果有偏差),先试用一下你这个东东看看,运行一段时间看看效果吧 从我们使用经验来看,丢数据基本不会在binlog解析这一阶段,因为它的逻辑很简单,解析错误就停下。 之前我们在实际线上也发生过几次丢数据的事件,发现丢数据的基本在数据处理上,比如异常没控制好,错误返回ack等(还好当时记录了严格的数据日志) 系统运行近一年后,我们才敢关闭数据日志,之前宁可牺牲一些同步性能,哈哈 推荐使用logback,支持日志自动归档压缩和过期清理,tar.gz压缩比可以达到10%以下 |
|
返回顶楼 | |
发表时间:2013-03-18
麻烦问一下:这个支持mysql 5.6吗?5.6的binlog的event事件加了checksum了的。
|
|
返回顶楼 | |