私はmariadbクラスターを作成しました。私はJavaアプリケーションを取得して、それらの1つが消滅したときに別のホストにフェイルオーバーできるようにしようとしています。jdbcでgalera mariadbを使用
"jdbc:mysql:sequential://host1,host2,host3/database?socketTimeout=2000&autoReconnect=true"
で接続を作成するアプリケーションを作成しました。アプリケーションは毎秒ループでクエリを作成します。私は、アプリケーションが現在のクエリを実行しているノードを殺した場合(Statement.executeQuery())私はタイムアウトのためのSQLExceptionを取得します。私は例外をキャッチし、再度実行文を、私は、要求が別のサーバーに送信されているので、その場合のフェールオーバーがOKに動作することを確認することができます。しかし、私はのexecuteQuery()が例外をスローし、静かに、自動的に別のサーバを再試行しないだろうと期待していました。
私は例外を処理する必要がないと明示的にクエリを再試行する必要があると仮定して間違っていますか?それを実現するために何か設定が必要なのでしょうか?
ありがとうございました。私はそれを知らなかった。この情報は私にとって非常に便利ですが、私の質問に完全には答えていません。 (例外を生成してから再接続するのではなく)クエリ中にドライバが再接続する可能性があるかどうかは分かりますか?私は非常に基本的なクエリを持っているので、私はそれを危険にさらすことができると思う。しかし、あなたの答えは将来私にとっては間違いないでしょう。 – ps197xv
申し訳ありませんが、私はJavaコネクタについてよく分かりません。 –