利用 datax同步一张全量表的数据到mysql,数据量比较大,在千万级,同步了一段时间后,就报错
communications link failure
都是read端报错了,这个该怎么设置,网上看了跟wait_timeout有关,下图是相关参数
show variables like “%timeout%”
利用 datax同步一张全量表的数据到mysql,数据量比较大,在千万级,同步了一段时间后,就报错
communications link failure
看看max_execution_time参数是否有限制。
如果是这个问题,那datax,只能通过调大代理服务器的idle?
那不是设置max_execution_time的问题,wait_timeout设置了session级别的吧所以和全局的不一样,应该不是参数问题,wait_timeout只影响空闲超时时间。排查上楼上的情况吧,看看是不是和连接池探活有关。
datax连接tidb的配置贴出来看下
先调一下代理的空闲时间观察看看吧
TiDB log 在这个时间前后有报错吗 ?看一下?
我现在直接从tidb的真实节点同步数据,同步了30多分钟,120w条数据,未出现之前的 communications link failure的错误,但是出现read tidb 时 out of memory quota!的报错,请问如何设置一边读一边写,而不是全部读完再写?
tidb log由于现在还没有tidb节点的登录权限,因此暂时看不到,等申请下来了权限再重复测试验证一下。
这个是因为超出默认的查询内存上限了,可以通过TiDB节点的这个参数调大:
另外,全部读完再写是啥意思,TiDB并没有对读写做限制,同时读写没问题的
这个参数我知道,那如果我的表数据量达到更大,只能继续通过调整该参数来实现全量数据同步吗,有没有别的更好的方式?
我的意思是,出现这个报错,是不是因为datax在tidb里面是先读取全表(只读一次),然后再分批次写入,如果能设置参数自动分批次读取,应该就可以避免这个问题吧?
你这两个问题和TiDB关系不大,是和DataX的处理机制有关,建议研究下DataX我对这个不是很熟,但是从经验上来看,这种ETL工具不会傻到把一张表的数据全部读完了再去往下游写吧
搜了下 DataX 的issue,一堆这样的
https://github.com/alibaba/DataX/issues/1272
https://github.com/alibaba/DataX/issues/940
https://github.com/alibaba/DataX/issues/502
一般就是下游的sink 速度不够,就会塞住
参考下
该主题在最后一个回复创建后60天后自动关闭。不再允许新的回复。