2012-09-12 77 views
1

我試圖配置我的web應用程序,如下所示: 1 tomcat server 2主數據庫中的master/master複製用於故障轉移目的。spring + hibernate +數據庫連接池和高可用性

我也succeded使用C3P0設置一個彙集聯接,從而避免了以打開一個新的Connexion爲每個請求(當沒有故障轉移參與)

我想用由JDBC連接器porvided的故障轉移支持以便在第一個數據庫不可用時將請求路由到第二個數據庫。因此,我只是通過提供額外的配置參數來使用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" /> 

回答

0

對不起,這是不是一個真正的答案,但我昨天=>Hibernate web application with MySQL failover有同樣的問題,問過類似的問題,所以想加入「我們的力量」。也因爲無法在這個問題上找到明確的指導。

我也使用c3p0,但關閉它並沒有讓它變得更好,故障轉移無法正常工作。所以我不認爲這是一個連接池問題。 這似乎與Spring Transaction管理和自動提交有關,但即使我閱讀了很多關於MySQL和故障轉移的文章,並做了很多不同的嘗試,但我仍然非常困惑。 我和你的配置之間的巨大差異是驅動程序,我使用這個:com.mysql.jdbc.ReplicationDriver。

我希望能很快找到解決方案,在這種情況下請確保我將分享它。