0 0

关于MySQL Proxy读写分离的问题25

最近做MYSQL主从复制、读写分离的事情,环境搭建完成,从MYSQL客户端测试主从复制,读写分离没有问题,但是一旦将其置入JBOSS就报下面的错误,再测试,如果直接连接数据库就没有问题,而且如果使用代理,竟然报的是org.hibernate.exception.GenericJDBCException,不知是何解,那位老兄出手相助下子.
环境如下:
Mysql 5.0.37 主从版本相同
MysqlProxy 0.8
Master 192.168.1.253
slave  192.168.1.128
代理地址:jdbc:mysql://192.168.1.253:4040/dbname
直接连接:jdbc:mysql://192.168.1.253:3306/dbname

mysqlproxy 启动脚本如下:
mysql-proxy --proxy-read-only-backend-addresses=192.168.1.128:3306 --proxy-backend-addresses=192.168.1.253:3306 --proxy-lua-script=E:/mysql/proxy/rw-splitting.lua&

还有个怪异的现象,就是一段时间后mysqlproxy连接会莫名奇妙的断开,而且启动的脚本监听不关闭,必须关闭,重新启动脚本,才能连接上,不知是何缘故

JBOSS控制台打印错误如下:
13:02:56,671 WARN  [JDBCExceptionReporter] SQL Error: 1243, SQLState: HY000
13:02:56,671 ERROR [JDBCExceptionReporter] Unknown prepared statement handler (1) given to mysql_stmt_execute
13:02:56,687 ERROR [STDERR] org.hibernate.exception.GenericJDBCException: could not execute query
        at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
        at org.hibernate.loader.Loader.doList(Loader.java:2223)
        at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
        at org.hibernate.loader.Loader.list(Loader.java:2099)
        at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
        at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
        at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
        at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
        at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
        at org.hibernate.impl.AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:811)
        at com.saihu.auth.dao.AuthUserDAO.getUserByName(Unknown Source)
        at com.saihu.auth.service.UserService.getUserByName(Unknown Source)
        at com.saihu.auth.server.stub.ice.AuthConnectorI.getUserByName(Unknown Source)
        at com.saihu.auth.client.stub.ic.interfaces._AuthConnectorDisp.___getUserByName(_AuthConnectorDisp.java:169)
        at com.saihu.auth.client.stub.ic.interfaces._AuthConnectorDisp.__dispatch(_AuthConnectorDisp.java:224)
        at IceInternal.Incoming.invoke(Incoming.java:147)
        at Ice.ConnectionI.invokeAll(ConnectionI.java:2078)
        at Ice.ConnectionI.message(ConnectionI.java:1239)
        at IceInternal.ThreadPool.run(ThreadPool.java:788)
        at IceInternal.ThreadPool.access$100(ThreadPool.java:12)
        at IceInternal.ThreadPool$EventHandlerThread.run(ThreadPool.java:1248)
Caused by: java.sql.SQLException: Unknown prepared statement handler (1) given to mysql_stmt_execute
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2901)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1584)
        at com.mysql.jdbc.Connection.serverExecute(Connection.java:4742)
        at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1251)
        at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:993)
        at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1657)
        at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeQuery(WrappedPreparedStatement.java:342)
        at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
        at org.hibernate.loader.Loader.getResultSet(Loader.java:1787)
        at org.hibernate.loader.Loader.doQuery(Loader.java:674)
        at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
        at org.hibernate.loader.Loader.doList(Loader.java:2220)
        ... 19 more
13:02:56,687 ERROR [STDERR] warning: dispatch exception:
identity: AuthProxy
facet:
operation: getUserByName
java.lang.NullPointerException
        at com.saihu.auth.server.stub.ice.AuthConnectorI.getUserByName(Unknown Source)
        at com.saihu.auth.client.stub.ic.interfaces._AuthConnectorDisp.___getUserByName(_AuthConnectorDisp.java:169)
        at com.saihu.auth.client.stub.ic.interfaces._AuthConnectorDisp.__dispatch(_AuthConnectorDisp.java:224)
        at IceInternal.Incoming.invoke(Incoming.java:147)
        at Ice.ConnectionI.invokeAll(ConnectionI.java:2078)
        at Ice.ConnectionI.message(ConnectionI.java:1239)
        at IceInternal.ThreadPool.run(ThreadPool.java:788)
        at IceInternal.ThreadPool.access$100(ThreadPool.java:12)
        at IceInternal.ThreadPool$EventHandlerThread.run(ThreadPool.java:1248)
13:02:56,703 ERROR [STDERR] Ice.UnknownException
    unknown = "java.lang.NullPointerException
                at com.saihu.auth.server.stub.ice.AuthConnectorI.getUserByName(Unknown Source)
                at com.saihu.auth.client.stub.ic.interfaces._AuthConnectorDisp.___getUserByName(_AuthConnectorDisp.java:169)
                at com.saihu.auth.client.stub.ic.interfaces._AuthConnectorDisp.__dispatch(_AuthConnectorDisp.java:224)
                at IceInternal.Incoming.invoke(Incoming.java:147)
                at Ice.ConnectionI.invokeAll(ConnectionI.java:2078)
                at Ice.ConnectionI.message(ConnectionI.java:1239)
                at IceInternal.ThreadPool.run(ThreadPool.java:788)
                at IceInternal.ThreadPool.access$100(ThreadPool.java:12)
                at IceInternal.ThreadPool$EventHandlerThread.run(ThreadPool.java:1248)
               "
2010年4月09日 13:31
目前还没有答案

相关推荐

    mysql配置mysql-proxy读写分离1

    MySQL Proxy 是一个开源工具,它允许你在 MySQL 客户端和服务器之间设置一个代理层,以便实现诸如负载均衡、故障切换、读写分离等高级功能。在这个场景中,我们将讨论如何配置 MySQL Proxy 来实现读写分离,以提高...

    使用mysql-proxy实现mysql读写分离

    ### 使用mysql-proxy实现MySQL读写分离 随着业务规模的不断扩大,数据库系统往往成为整个系统中的瓶颈之一。为了提高系统的响应速度以及数据处理能力,一种常用的技术手段就是采用**读写分离**的方式。读写分离的...

    Docker搭建MySQLl基于ShardingSphere-Proxy读写分离(docker-compose)

    docker_compose搭建shardingSphereProxyMysql主从读写分离

    mysql-proxy读写分离.docx

    公司运维手册,mysql-proxy读写分离,废话不多说,上干货!

    Mysql Proxy 实现mysql读写分离.pdf

    MySQL Proxy 实现读写分离 MySQL Proxy 是一个处于 Client 端和 MySQL server 端之间的简单程序,它可以监测、分析或改变它们的通信。它使用灵活,没有限制,常见的用途包括:负载平衡,故障、查询分析,查询过滤和...

    MysqlProxy实现mysql读写分离[整理].pdf

    以下是关于 MySQL Proxy 实现读写分离的详细知识: 1. **读写分离概念**:在大型系统中,为了提高数据库性能,通常会采用主从复制策略,即一个主库负责写操作,多个从库负责读操作。读写分离就是将读操作分配到从库...

    MYSQL数据库读写分离mysql-proxy 32bit包

    为了解决这个问题,MySQL提供了一个名为`mysql-proxy`的工具,这正是"MYSQL数据库读写分离mysql-proxy 32bit包"的主题。MySQL Proxy是一个轻量级的代理服务器,它可以坐在MySQL服务器和客户端应用程序之间,动态地...

    MySQL Proxy 快速实现读写分离以及负载均衡

    ### MySQL Proxy 快速实现读写分离以及负载均衡 #### 一、概述 在数据库管理领域,MySQL Proxy 是一个开源的代理服务器,它为 MySQL 提供了一层中间件,能够帮助用户实现数据库的读写分离、负载均衡等功能,进而...

    mysql-proxy实现读写分离1

    MySQL Proxy 是一个开源工具,主要用于实现数据库的读写分离,以优化MySQL服务器的负载。在本文中,我们将探讨如何利用MySQL Proxy实现一个简单的读写分离环境,并关注在配置过程中的一些关键点。 首先,读写分离是...

    mysql 读写分离软件

    常见的MySQL读写分离软件有MySQL Proxy、MaxScale、HAProxy、AMQP等。每款软件都有其特点和适用场景,比如MySQL Proxy轻量级但功能相对简单,MaxScale是MySQL公司官方出品,功能强大且易于集成,HAProxy则常用于网络...

    MySQL读写分离架构与实践--mysql-proxy

    MySQL主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy/Amoeba)来提升数据库的并发负载能力 这样的方案来进行部署与实施的

    mysql读写分离配置

    配置文件`mysql-proxy.cnf`用于指定MySQL-Proxy的各种参数,包括连接信息、读写分离策略等。 ```bash cd /usr/local/mysql-proxy mkdir lua mkdir logs cp share/doc/mysql-proxy/rw-splitting.lua ./lua vi...

    Ubuntu10下如何搭建MySQL Proxy读写分离探讨

    MySQL Proxy在Ubuntu 10环境下搭建读写分离的实践指南 MySQL Proxy是一个轻量级的程序,它位于MySQL客户端和服务器之间,具有监控、分析甚至修改两者之间通信的能力。其核心特性之一是读写分离,这能有效提高数据库...

    MySQL-Proxy快速实现读写分离以及负载均衡

    MySQL Proxy是MySQL数据库系统中的一个轻量级工具,用于实现数据库的读写分离和负载均衡。它作为一个中间代理服务器,接收来自客户端的请求,然后根据配置策略将这些请求转发到合适的MySQL服务器实例上。在上述描述...

    mysql读写分离调度器

    总的来说,MySQL读写分离调度器是提高数据库性能的有效手段,而MySQL Proxy作为开源解决方案,为企业提供了一种灵活且低成本的实施方式。不过,随着技术的发展,企业也应关注并考虑更现代、更完善的数据库解决方案。

    mysql读写分离实现

    ### MySQL读写分离实现 #### 一、MySQL读写分离概述 MySQL的读写分离是一种常用的数据库优化技术,主要用于提高数据库系统的并发处理能力和可用性。它通过将数据查询(读操作)与数据更新(写操作)分布在不同的...

Global site tag (gtag.js) - Google Analytics