2016-08-18 9 views
0

私はマルチAZ冗長性をTrueに設定したAWS MySQLインスタンスを持っています。私はまた、読み取り専用クエリに使用する読み取り複製を持っています。私は接続プールとしてC3P0を使用しています。 AWSは、マスターインスタンスと読み取りレプリカのエンドポイントを指定しますが、冗長マスターのエンドポイントは指定しません。私は2つの接続プールを作成しています.1つは読み取りアクセス用で、もう1つは書き込みアクセス用です。マスターがフェイルオーバーした場合、サービスが冗長マスタに到達できるようにするにはどうすればよいですか?私はttlの設定について読んで、30に設定しています。しかし、マスターをリブートして(フェイルオーバーボタンを押した)、マスターがリブートを完了してオンラインに戻るまで、私のサービスはデータを書き込めませんでした。 Guiceを使用してコードに接続プールを挿入しています。AWS RDSにフェイルオーバーする方法JavaのMySQLレプリカ

+0

フェールオーバーするためにボックスにチェックを入れた場合、マスターは決して「オンラインに戻った」ことはありません。マスターはスタンバイになり、スタンバイはマスターに昇格しました。 DNSは、マスターに接続するために使用していたアドレスが新しいマスター(古いスタンバイ)に切り替わるように切り替えるはずです。 –

+0

あなたは正しいです、私は間違った用語を使用しました。自分のコードでこのDNSのスイッチを検出するにはどうしたらいいですか?私はjava.security.Security.setProperty( "networkaddress.cache.ttl"、 "10")を設定しました。 (彼らは60秒を言ったが、私は10時にそれを試していた) – Mark

+0

それはあなたがする必要があるはずだ。 –

答えて

0

フェールオーバーを機能させることができました。 (それは実際に働いていた、私はそれが起こるのを見るのに十分長い間待っていなかった)。 C3P0の設定が高すぎると、C3P0に接続が失敗したことがわかりませんでした。

関連する問題