暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

万里数据库GreatDB事务dtm其他问题

原创 Dbb 2024-05-23
164

dtm client 与 server 网络断开

如果网络可以被dtm client/server可侦测的。 则不需要使用 超时机制。

当侦测到网络故障时:

dtm server: 清理相应dtm client的活跃事务, 并广播给其他的dtm client 去清理相应故障的dtm client 发起的活跃事务; 对那些处于prepare 状态的事务, 则由后台recover线程处理。

dtm client: 唤醒正在等待的事务,并设置相关的错误状态。然后尝试重新连接到dtm server.

mysql keep alive timeout

为了处理datanode 主端口异常,在mysql server中新加入了以下系统参数,作为会话级别的 tcp keep alive参数。

mysql keep alive 参数默认值
net_keep_alive_interval2
net_keep_alive_probes5
net_keep_alive_timeout20
net_keep_alive_user_timeout50000 ms

Sqlnode到Datanode连接的keep alive user timeout

连接池连接 keep alive 参数默认值
greatdb_connection_keepalive_user_timeout30000ms
  • 在集群sqlnode端,连接池中连向datanode的session使用下列参数作为datanode端的tcp keep alive参数:

    net_keep_alive_interval = 2
    net_keep_alive_probes = 3
    net_keep_alive_user_timeout = greatdb_connection_keepalive_user_timeout
    

在集群上,此参数对查询含大量数据的分区表影响较大:当某个分区数据过多时,sqlnode会长时间不接收位于其它datanode的分区的数据。其它datanode向sqlnode发送数据受阻且超过此参数时,datanode会关闭连接,最终sqlnode执行的语句会报错"Execute backend SQL on node * lost_connection"。

注意:修改此参数后,需要刷新SN到DN的连接池。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论