Beebol's 快乐分享

Beebol 一些生活和工作上的分享

metabase to proxysql: unexpected end of stream


近期大数据相关业务的MySQL上proxysql时遇到一个问题,开源BI平台metabase,通过proxysql访问mysql后无法建立连接。直接抛如下异常:

java.lang.Exception: java.sql.SQLNonTransientConnectionException: unexpected end of stream, read 0 bytes 
from 7 (socket was closed by server)
at metabase.driver.util$can_connect_with_details_QMARK_.invokeStatic(util.clj:34)
at metabase.driver.util$can_connect_with_details_QMARK_.doInvoke(util.clj:18)

proxysql的版本:

ProxySQL version 1.4.11-6-g4e44db1, codename Truls

proxysql日志中有报如下异常:

2019-07-18 10:14:16 MySQL_Session.cpp:95:kill_query_thread(): [WARNING] KILL CONNECTION 0 on 10.26.1.168:3306
2019-07-18 10:14:24 MySQL_Session.cpp:2448:handler(): [ERROR] Unexpected packet from client, disconnecting the client
2019-07-18 10:14:24 MySQL_Session.cpp:2448:handler(): [ERROR] Unexpected packet from client, disconnecting the client

异常后切换到直连mysql是正常的。 在git中有类似的问题:#1138。大概的问题是:

1、使用了maridb的驱动,mariadb-connector-j 2.0.0 增加了一个参数usePipelineAuth,默认是开启的。就是在发送一个请求时,没有收到回复时,就可以发送下一个请求,这时proxysql来说就是一个异常请求会断掉连接,并报如下错“[ERROR] Unexpected packet from client”。
2、切换到mysql驱动后能正常使用,mysql-connector 是没有这方面的功能的
3、使用maridb驱动需要将usePipelineAuth设置为false

知道大概方向后,向开发确认信息,确实使用maridb的驱动,不过将usePipelineAuth参数设置为false还是不行,后面将驱动换成mysql就正常了。



文章最后更新时间: 2019年07月20日 14:28:59


统计

今日PV:2952 今日UV:2926

文章总数:159 评论总数:7840

原创156 转载0 翻译3

分类文章统计

Python常见错误(3)

Python基础(10)

Django(5)

Flask(1)

Consul(3)

Linux基础(6)

shell(11)

linux排障(4)

虚拟化(1)

MySQL(64)

ProxySQL(7)

SequoiaDB(2)

TiDB(4)

Redis(2)

oracle(10)

常用软件(2)

硬件排障(2)

HTML(1)

JavaScript(1)

我们的作品(18)

windows(1)

总结(1)

按年文章统计

2013(43)

2014(19)

2015(25)

2016(6)

2017(30)

2018(7)

2019(17)

2020(4)

2021(4)

2023(1)

2024(3)

老版入口

IT OPer's 快乐分享

亲,扫我吧!
ITOpers
友情链接

飞哥的:imbusy.me/
冰川的:www.mindg.cn
海洋的:hiaero.net
宏斌的:techindeep.com
若水的:nosa.me
段郎的:sixther.me
肥客联邦:fk68.net