-
Notifications
You must be signed in to change notification settings - Fork 7.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Mysql产生的binlog,大量数据的时候,同步到Canal慢,这个怎么解决? #672
Comments
帮忙分析几个过程,写入到binlog -> canal接收到 -> canal解析存储到memory -> client接收,看一下具体瓶颈点 |
以上三点设计到的IO操作。 |
我们最近通过测试发现 while (fetcher.fetch()) 拉取数据qps在1000的样子, 由于canal读数据是单线程的,如果瞬间插入百万数据对canal客户端读取的延长性还是很大的,不知道楼主这个问题解决了吗 |
你现在延迟 多久 我100万数据大概在25分左右 |
50W条数据 5分钟左右 |
50W条数据 5分钟左右 采用的单线程方式吗? 将数据同步到es 还是redis 加我wx aleenjava 探讨一下 |
我是这样做的,开了2个线程,一个线程不断的取数据,然后放到阻塞队列,然后第二个线程就从阻塞队列消费,然后按顺序的发送到MQ上。 |
@DevWithLin 你这边是基于canal的解析,完成了对接kafka吗? |
我这边用的是 基于配置界面的目前可对接rabbitmq和activemq,kafka没有用呢, 后续会完成kafka。 @agapple |
我还打算 让canalClient支持下Sky-Walking. |
我是这样做的,开了2个线程,一个线程不断的取数据,然后放到阻塞队列,然后第二个线程就从阻塞队列消费,然后按顺序的发送到MQ上。 这和单线程消费顺序发送到MQ 上有什么区别? |
当MQ发送耗时大于从Canal Server Get数据的时候,这就很有意义了。 |
代码在哪里 方面分享一下吗? |
好简单的,都不用代码的啊。开两个线程一个阻塞队列,模拟生产消费。 |
我就是用这种方式 实现的 没达到你说得效果 100万数据大概 20分钟 |
我这边很快啊~ 你发到哪里的? |
写入到es 中 |
写入kafka的话 跟maxwell差不多? |
@chenglinjava68 估计是 ES的瓶颈吧,我写rabbitmq的,平均8000多个消息。 |
每秒8000? 有点夸张了吧 |
一个canal部署的实例较多是不是也会导致延时较大呢? |
是的
最好引入kafka 作为中间传输介质
…------------------ 原始邮件 ------------------
发件人: "cun123"<notifications@github.com>;
发送时间: 2019年6月11日(星期二) 下午3:24
收件人: "alibaba/canal"<canal@noreply.github.com>;
抄送: "漂泊"<705366435@qq.com>;"Mention"<mention@noreply.github.com>;
主题: Re: [alibaba/canal] Mysql产生的binlog,大量数据的时候,同步到Canal慢,这个怎么解决? (#672)
一个canal部署的实例较多是不是也会导致延时较大呢?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
|
已经接入kafka,但是现在我遇到从MySQL取数延时较大,有什么好的建议吗? |
我用配置界面对接kafka,但是对你讲的两个线程一个阻塞队列不太理解,能详细说一下吗? |
我之前也是自建阻塞队列是基于 |
加微信私聊 aleenjava
…------------------ 原始邮件 ------------------
发件人: "xuyisu"<notifications@github.com>;
发送时间: 2019年9月18日(星期三) 上午10:04
收件人: "alibaba/canal"<canal@noreply.github.com>;
抄送: "漂泊"<705366435@qq.com>;"Mention"<mention@noreply.github.com>;
主题: Re: [alibaba/canal] Mysql产生的binlog,大量数据的时候,同步到Canal慢,这个怎么解决? (#672)
我这边用的是 基于配置界面的目前可对接rabbitmq和activemq,kafka没有用呢, 后续会完成kafka。 @agapple
我用配置界面对接kafka,但是对你讲的两个线程一个阻塞队列不太理解,能详细说一下吗?
我之前也是自建阻塞队列是基于ArrayBlockingQueue,这种方案问题是客户端一旦挂掉、重启会丢失数据,建议直接写到消息队列(kafka、rocketmq等)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
|
做了一些大量的数据的测试,比如更新一个100W的表,同步到Canal,会7-8秒才能到Canal,我Get数据的时候,batchid为-1,然后我就猜想服务端的RingBuffer doPut应该还没有put到数据,我想应该是Mysql到Canal Server会有阻塞的过程,这种有没有办法降阻塞的时间?比如mysql5.7的多线程并行的操作。
The text was updated successfully, but these errors were encountered: