具有MySQL故障转移功能的Hibernate Web应用程序

时间:2012-09-12 09:28:51

标签: java mysql hibernate database-replication

我开发了一个Java Web应用程序,使用Hibernate 3.3.2作为持久性框架,使用Apache Tomcat 7.0.27作为服务器。 此应用程序已成功设置为使用MySQL 5.5 Replication Server:1个主服务器,1个从服务器。只读查询在后者和主实例上进行。

问题出在这里:我想测试数据库故障转移,即在某个时候停止从属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连接器文档时,我尝试了很多属性配置,但无法弄清楚如何获得可靠的故障转移。

1 个答案:

答案 0 :(得分:0)

同样的问题:https://dba.stackexchange.com/questions/19453/jboss-dont-fail-over-mysql-slave-using-datasource

它应该正常工作......但我不知道如何......

似乎许多人使用一些外部代理或负载均衡器: