spring + hibernate +数据库连接池和高可用性

时间:2012-09-12 20:35:02

标签: mysql spring hibernate cluster-computing failover

我正在尝试像这样配置我的Web应用程序: 1个tomcat服务器 主/主复制中的2个mysql数据库,用于故障转移。

我还成功使用c3p0建立了一个池化连接,从而避免为每个请求打开一个新的连接(当没有涉及故障转移时)

我想使用jdbc连接器提供的故障转移支持,以便在第一个数据库不可用时将请求路由到第二个数据库。因此,我只是通过提供额外的配置参数来使用jdbc驱动程序的故障转移功能。

目前,当一台服务器不可用时,请求路由到第二个可用服务器。但是,我遇到了每个请求在数据库上新打开的连接问题。

似乎联合连接池和jdbc故障转移似乎没有工作?

请咨询,也请参阅配置参数

<bean id="mydataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"     destroy-method="close">
  <property name="driverClass" value="com.mysql.jdbc.Driver"/>
  <property name="jdbcUrl"  value="jdbc:mysql://localhost:3306,myOtherServer:3306/zeus?autoCommit=true&amp;autoReconnect=true&amp;autoReconnectForPools=true&amp;failOverReadOnly=false"/>
  <property name="user" value="root" />
  <property name="password" value="root" /> 

  <!-- these are C3P0 properties -->
  <!-- property name="acquireIncrement" value="${acquireIncrement}" /_-->
  <property name="minPoolSize" value="6" />
  <property name="maxPoolSize" value="10" />
  <property name="maxIdleTime" value="100" />
</bean>

1 个答案:

答案 0 :(得分:0)

对不起,这不是一个真正的答案,但是我遇到了同样的问题并且在昨天问了一个类似的问题=&gt; Hibernate web application with MySQL failover,所以想加入“我们的力量”。也因为无法找到关于此事的明确指南。

我也使用c3p0,但关闭它并不能使它更好,故障转移无论如何都不起作用。所以我不认为这是一个连接池问题。 它似乎与Spring Transaction管理和自动提交相关,但即使我阅读了很多关于MySQL和故障转移的文章,并做了很多不同的尝试,我仍然感到很困惑。 我和你的配置之间的最大区别是驱动程序,我使用它:com.mysql.jdbc.ReplicationDriver。

我希望尽快找到解决方案,在这种情况下一定要分享。