Web アプリケーションを次のように構成しようとしています。1 つの tomcat サーバー 2 つの mysql データベースをマスター/マスター レプリケーションでフェイルオーバー用に使用します。
また、c3p0 を使用してプールされた接続をセットアップすることに成功したため、リクエストごとに新しい接続を開くことを回避できます (フェイルオーバーが含まれていない場合)。
最初のデータベースが使用できない場合に、リクエストを 2 番目のデータベースにルーティングするために、jdbc コネクタによって提供されるフェイルオーバー サポートを使用したいと考えています。したがって、追加の構成パラメーターを提供するだけで、jdbc ドライバーのフェイルオーバー機能を使用しています。
現時点では、1 つのサーバーが使用できない場合、要求は 2 番目に使用可能なサーバーにルーティングされます。ただし、リクエストごとにデータベースで新しく開かれた接続で問題に直面しています。
接続プーリングと 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&autoReconnect=true&autoReconnectForPools=true&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>