2012-09-12 21 views
2

我开发了一个Java Web应用程序,使用Hibernate 3.3.2作为持久性框架和Apache Tomcat 7.0.27作为服务器。 此应用程序已成功设置为使用MySQL 5.5 Replication Server:1个主站,1个从站。只读查询继承后者和主实例上的其他查询。带MySQL故障转移的Hibernate Web应用程序

问题在于:我想测试数据库故障转移,即在某些时候停止从属MySQL实例并查看应用程序仍然可以使用只读查询。据我了解,从以下文章MySQL Failover with Connector/J,这应该是可能的,没有改变的代码。开始我对第二种情况感兴趣:通信异常(SQL状态以“08”开头)。 不幸的是,如果我停止从服务器,这种情况不会发生,有时需要很长时间才能从服务器获得响应,有时无法返回并且HTTP连接被阻塞。在Tomcat日志中,只需获取以下行:

从服务器成功接收的最后一个数据包是N毫秒前。成功发送到服务器的最后一个数据包是0毫秒前。

这里是Hibernate配置的一个片段:

<property name="hibernate.connection.driver_class">com.mysql.jdbc.ReplicationDriver</property> 
<property name="hibernate.connection.url">jdbc:mysql://masterIP,slaveIP/mydb?loadBalancePingTimeout=1500&amp;loadBalanceBlacklistTimeout=7000&amp;autoReconnect=true&amp;failOverReadOnly=false&amp;roundRobinLoadBalance=true</property> 

注视的MySQL连接器文档,我已经尝试了许多性能配置,但无法弄清楚如何获得可靠的故障切换。

回答