You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by air23 <wa...@163.com> on 2020/10/23 06:21:19 UTC

Flink mysqlCDC ,然后jdbc sink 到mysql 乱序问题

你好,
这边发现使用cdc读取mysql ,然后写入mysql会有乱序问题
在上游mysql update一条数据,connert=print是有一条delete 和一条insert的数据,
但是jdbc写入mysql时候 发现mysql有时候是正常的,但是有时候会没有,当把并行度改成1的时候是正常的。
这边怀疑是乱序了,先insert 再delete了。所以导致结果表 没有这条数据,请问flink sql 或者flink cdc 怎么保证有序。

Re: Flink mysqlCDC ,然后jdbc sink 到mysql 乱序问题

Posted by jindy_liu <28...@qq.com>.
我也遇到这种乱序问题,楼主,你那边在sql层面解决了么?



--
Sent from: http://apache-flink.147419.n8.nabble.com/

Re:Re:Re:Flink mysqlCDC ,然后jdbc sink 到mysql 乱序问题

Posted by hailongwang <18...@163.com>.
Hi,
相同记录的不同操作 的 gwo.order_code 会相同吗。默认 group by 的并行度是最大的并行度,如果不同的话,那么会被 hash 到 不同的并发,就有可能出现你说的那个情况。


在 2020-10-26 10:34:30,"air23" <wa...@163.com> 写道:
>这边源数据 就是用cdc读取mysql。cdc不会保证有序吗 ?  Forword  这个是通过什么方式保证的? 谢谢你的回复
>在 2020-10-26 05:37:45,"hailongwang" <18...@163.com> 写道:
>>Hi air,
>>保证内部是  Forword 试试,因为内部是 Hash 或者 Rebalance 的话,就会出现相同的数据的操作记录被不同的并发处理,这样到 sink 时候就会出现乱序的可能。
>>
>>
>>Best,
>>Hailong Wang.
>>
>>
>>
>>
>>在 2020-10-23 13:21:19,"air23" <wa...@163.com> 写道:
>>>你好,
>>>这边发现使用cdc读取mysql ,然后写入mysql会有乱序问题
>>>在上游mysql update一条数据,connert=print是有一条delete 和一条insert的数据,
>>>但是jdbc写入mysql时候 发现mysql有时候是正常的,但是有时候会没有,当把并行度改成1的时候是正常的。
>>>这边怀疑是乱序了,先insert 再delete了。所以导致结果表 没有这条数据,请问flink sql 或者flink cdc 怎么保证有序。

Re:Re:Flink mysqlCDC ,然后jdbc sink 到mysql 乱序问题

Posted by air23 <wa...@163.com>.
这边源数据 就是用cdc读取mysql。cdc不会保证有序吗 ?  Forword  这个是通过什么方式保证的? 谢谢你的回复
在 2020-10-26 05:37:45,"hailongwang" <18...@163.com> 写道:
>Hi air,
>保证内部是  Forword 试试,因为内部是 Hash 或者 Rebalance 的话,就会出现相同的数据的操作记录被不同的并发处理,这样到 sink 时候就会出现乱序的可能。
>
>
>Best,
>Hailong Wang.
>
>
>
>
>在 2020-10-23 13:21:19,"air23" <wa...@163.com> 写道:
>>你好,
>>这边发现使用cdc读取mysql ,然后写入mysql会有乱序问题
>>在上游mysql update一条数据,connert=print是有一条delete 和一条insert的数据,
>>但是jdbc写入mysql时候 发现mysql有时候是正常的,但是有时候会没有,当把并行度改成1的时候是正常的。
>>这边怀疑是乱序了,先insert 再delete了。所以导致结果表 没有这条数据,请问flink sql 或者flink cdc 怎么保证有序。

Re:Flink mysqlCDC ,然后jdbc sink 到mysql 乱序问题

Posted by hailongwang <18...@163.com>.
Hi air,
保证内部是  Forword 试试,因为内部是 Hash 或者 Rebalance 的话,就会出现相同的数据的操作记录被不同的并发处理,这样到 sink 时候就会出现乱序的可能。


Best,
Hailong Wang.




在 2020-10-23 13:21:19,"air23" <wa...@163.com> 写道:
>你好,
>这边发现使用cdc读取mysql ,然后写入mysql会有乱序问题
>在上游mysql update一条数据,connert=print是有一条delete 和一条insert的数据,
>但是jdbc写入mysql时候 发现mysql有时候是正常的,但是有时候会没有,当把并行度改成1的时候是正常的。
>这边怀疑是乱序了,先insert 再delete了。所以导致结果表 没有这条数据,请问flink sql 或者flink cdc 怎么保证有序。

Re:回复:Flink mysqlCDC ,然后jdbc sink 到mysql 乱序问题

Posted by air23 <wa...@163.com>.
就是一个update 操作。就是乱序了 。
在 2020-10-23 19:12:20,"熊云昆" <xi...@163.com> 写道:
>你的数据有没有时间属性?可以用时间来判断吧
>
>
>| |
>熊云昆
>|
>|
>邮箱:xiongyunkun@163.com
>|
>
>签名由 网易邮箱大师 定制
>
>在2020年10月23日 14:21,air23 写道:
>你好,
>这边发现使用cdc读取mysql ,然后写入mysql会有乱序问题
>在上游mysql update一条数据,connert=print是有一条delete 和一条insert的数据,
>但是jdbc写入mysql时候 发现mysql有时候是正常的,但是有时候会没有,当把并行度改成1的时候是正常的。
>这边怀疑是乱序了,先insert 再delete了。所以导致结果表 没有这条数据,请问flink sql 或者flink cdc 怎么保证有序。

回复:Flink mysqlCDC ,然后jdbc sink 到mysql 乱序问题

Posted by 熊云昆 <xi...@163.com>.
你的数据有没有时间属性?可以用时间来判断吧


| |
熊云昆
|
|
邮箱:xiongyunkun@163.com
|

签名由 网易邮箱大师 定制

在2020年10月23日 14:21,air23 写道:
你好,
这边发现使用cdc读取mysql ,然后写入mysql会有乱序问题
在上游mysql update一条数据,connert=print是有一条delete 和一条insert的数据,
但是jdbc写入mysql时候 发现mysql有时候是正常的,但是有时候会没有,当把并行度改成1的时候是正常的。
这边怀疑是乱序了,先insert 再delete了。所以导致结果表 没有这条数据,请问flink sql 或者flink cdc 怎么保证有序。

Re:回复: Flink mysqlCDC ,然后jdbc sink 到mysql 乱序问题

Posted by air23 <wa...@163.com>.





你好 主要流程 见附件


流程就是使用cdc 读取mysql。然后left join 维度表 ,最后写入到mysql


问题是测试的时候。update cdc的源表一条数据。发现结果的数据 有时候有 有时候没有,
使用connect=print 发现两条数据流。一个是delete 一个是insert,这边怀疑是乱序 导致先insert 在delete掉了,
把并行度设置为1的时候。就是正常的。如果沟通不方便 欢迎加钉钉13269166963。











在 2020-10-26 12:11:59,"史 正超" <sh...@outlook.com> 写道:
>Hi, @air23, 你能提供下完整的sql吗?,我来复现下这个问题
>________________________________
>发件人: air23 <wa...@163.com>
>发送时间: 2020年10月23日 6:21
>收件人: user-zh@flink.apache.org <us...@flink.apache.org>
>主题: Flink mysqlCDC ,然后jdbc sink 到mysql 乱序问题
>
>你好,
>这边发现使用cdc读取mysql ,然后写入mysql会有乱序问题
>在上游mysql update一条数据,connert=print是有一条delete 和一条insert的数据,
>但是jdbc写入mysql时候 发现mysql有时候是正常的,但是有时候会没有,当把并行度改成1的时候是正常的。
>这边怀疑是乱序了,先insert 再delete了。所以导致结果表 没有这条数据,请问flink sql 或者flink cdc 怎么保证有序。

回复: Flink mysqlCDC ,然后jdbc sink 到mysql 乱序问题

Posted by 史 正超 <sh...@outlook.com>.
Hi, @air23, 你能提供下完整的sql吗?,我来复现下这个问题
________________________________
发件人: air23 <wa...@163.com>
发送时间: 2020年10月23日 6:21
收件人: user-zh@flink.apache.org <us...@flink.apache.org>
主题: Flink mysqlCDC ,然后jdbc sink 到mysql 乱序问题

你好,
这边发现使用cdc读取mysql ,然后写入mysql会有乱序问题
在上游mysql update一条数据,connert=print是有一条delete 和一条insert的数据,
但是jdbc写入mysql时候 发现mysql有时候是正常的,但是有时候会没有,当把并行度改成1的时候是正常的。
这边怀疑是乱序了,先insert 再delete了。所以导致结果表 没有这条数据,请问flink sql 或者flink cdc 怎么保证有序。

回复:Flink mysqlCDC ,然后jdbc sink 到mysql 乱序问题

Posted by 邓志豪 <28...@qq.com>.
有添加Timestamp和Watermark吗?




------------------&nbsp;原始邮件&nbsp;------------------
发件人:                                                                                                                        "user-zh"                                                                                    <wangfei23_job@163.com&gt;;
发送时间:&nbsp;2020年10月23日(星期五) 下午2:21
收件人:&nbsp;"user-zh"<user-zh@flink.apache.org&gt;;

主题:&nbsp;Flink mysqlCDC ,然后jdbc sink 到mysql 乱序问题



你好,
这边发现使用cdc读取mysql ,然后写入mysql会有乱序问题
在上游mysql update一条数据,connert=print是有一条delete 和一条insert的数据,
但是jdbc写入mysql时候 发现mysql有时候是正常的,但是有时候会没有,当把并行度改成1的时候是正常的。
这边怀疑是乱序了,先insert 再delete了。所以导致结果表 没有这条数据,请问flink sql 或者flink cdc 怎么保证有序。

Re:回复:Flink mysqlCDC ,然后jdbc sink 到mysql 乱序问题

Posted by air23 <wa...@163.com>.
还是说 需要使用eventtime?
在 2020-10-24 14:15:43,"pezynd" <28...@qq.com> 写道:
>有添加Timestamp和Watermark吗?
>
>
>
>
>------------------&nbsp;原始邮件&nbsp;------------------
>发件人:                                                                                                                        "user-zh"                                                                                    <wangfei23_job@163.com&gt;;
>发送时间:&nbsp;2020年10月23日(星期五) 下午2:21
>收件人:&nbsp;"user-zh"<user-zh@flink.apache.org&gt;;
>
>主题:&nbsp;Flink mysqlCDC ,然后jdbc sink 到mysql 乱序问题
>
>
>
>你好,
>这边发现使用cdc读取mysql ,然后写入mysql会有乱序问题
>在上游mysql update一条数据,connert=print是有一条delete 和一条insert的数据,
>但是jdbc写入mysql时候 发现mysql有时候是正常的,但是有时候会没有,当把并行度改成1的时候是正常的。
>这边怀疑是乱序了,先insert 再delete了。所以导致结果表 没有这条数据,请问flink sql 或者flink cdc 怎么保证有序。

Re:回复:Flink mysqlCDC ,然后jdbc sink 到mysql 乱序问题

Posted by air23 <wa...@163.com>.
这边就是单纯的  读取cdc 然后维表join写入mysql   没有窗口计算
在 2020-10-24 14:15:43,"pezynd" <28...@qq.com> 写道:
>有添加Timestamp和Watermark吗?
>
>
>
>
>------------------&nbsp;原始邮件&nbsp;------------------
>发件人:                                                                                                                        "user-zh"                                                                                    <wangfei23_job@163.com&gt;;
>发送时间:&nbsp;2020年10月23日(星期五) 下午2:21
>收件人:&nbsp;"user-zh"<user-zh@flink.apache.org&gt;;
>
>主题:&nbsp;Flink mysqlCDC ,然后jdbc sink 到mysql 乱序问题
>
>
>
>你好,
>这边发现使用cdc读取mysql ,然后写入mysql会有乱序问题
>在上游mysql update一条数据,connert=print是有一条delete 和一条insert的数据,
>但是jdbc写入mysql时候 发现mysql有时候是正常的,但是有时候会没有,当把并行度改成1的时候是正常的。
>这边怀疑是乱序了,先insert 再delete了。所以导致结果表 没有这条数据,请问flink sql 或者flink cdc 怎么保证有序。

回复:Flink mysqlCDC ,然后jdbc sink 到mysql 乱序问题

Posted by pezynd <28...@qq.com>.
有添加Timestamp和Watermark吗?




------------------&nbsp;原始邮件&nbsp;------------------
发件人:                                                                                                                        "user-zh"                                                                                    <wangfei23_job@163.com&gt;;
发送时间:&nbsp;2020年10月23日(星期五) 下午2:21
收件人:&nbsp;"user-zh"<user-zh@flink.apache.org&gt;;

主题:&nbsp;Flink mysqlCDC ,然后jdbc sink 到mysql 乱序问题



你好,
这边发现使用cdc读取mysql ,然后写入mysql会有乱序问题
在上游mysql update一条数据,connert=print是有一条delete 和一条insert的数据,
但是jdbc写入mysql时候 发现mysql有时候是正常的,但是有时候会没有,当把并行度改成1的时候是正常的。
这边怀疑是乱序了,先insert 再delete了。所以导致结果表 没有这条数据,请问flink sql 或者flink cdc 怎么保证有序。