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

解决金仓数据库 KingbaseES JDBC 读写分离连接报错,无法找到主机的问题

数据猿 2022-12-30
1134

 

读写分离找不到主机,即主机连接建立失败,需要打开JDBC日志查看具体原因

JDBC读写分离日志分析办法如下

常用的JDBC日志的命令:

  • 查看一个线程的日志,假如131 是线程ID

grep "\[131\]" ./jdbc_new.log > 131.log

这样就能看到131线程的完整JDBC日志,这样就能看到这个线程都干了什么事情,反推应用的业务逻辑。

  • 查看 131这个线程里的所有执行语句

grep "consume time" ./131.log > 131_consume.log

这个日志就是这个线程里执行的全部的SQL是什么和SQL执行的时间。

例子:

[2019-08-08 11:17:29] [114] [com.kingbase8.dispatcher.executor.DispatchAbstractStatement-->executeTemplet] DispatchPreparedStatementV2.executeQuery(select pk_value ,CTID,XMIN from ecms_gen_pk where pk_name = 'pk_web_url_access_log' for update;) consume time:::17(ms)

  • 查看 monitor线程的日志

从全日志里搜 monitor找到对应的线程ID比如是[32]

grep "\[32\]" ./jdbc_new.log > 32.log

这样就能看到monitor不停的刷在线的主备机的IP,这样基本就能看到集群的历史和现在的状态,主备机都是谁。

  • 查看是哪条SQL把事务设置为写事务了,从而不再分发备机

从日志里搜”Enter transactional state from sql”,后面的SQL就是被识别为写语句的SQL。

例子:

[2019-08-08 11:17:29] [114] [com.kingbase8.dispatcher.sqlParser.sql.SqlParser-->parse] Enter transactional state from sql[select pk_value from ecms_gen_pk where pk_name = 'pk_web_url_access_log' for update].

  • 查要看应用建一个新的JDBC连接的时间消耗

从日志里搜“this connect consume time”,这个会显示建一个连接的时间消耗。

例子:

[2019-08-08 11:25:16] [302] [com.kingbase8.Driver-->makeConnection] this connect consume time:::135(ms)

  • 查看发生了什么错误

从日志里搜“Exception”,就能看到所有的异常信息。

例子:

[2019-08-08 11:21:29] [302] [com.kingbase8.Driver-->connect] Unexpected connection e


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

评论