2012-09-12 3 views
2

Hibernate 3.3.2를 영속 프레임 워크로 사용하고 Apache Tomcat 7.0.27을 서버로 사용하여 Java 웹 애플리케이션을 개발했습니다. 이 응용 프로그램은 MySQL 5.5 Replication Server를 사용하도록 성공적으로 설정되었습니다. 마스터 1 개, 슬레이브 1 개. 읽기 전용 쿼리는 마스터 인스턴스의 후자와 나머지 쿼리로 이동합니다.MySQL 페일 오버가있는 Hibernate 웹 애플리케이션

여기에 문제가 있습니다. DB 장애 조치를 테스트하고 싶습니다. 즉, 슬레이브 MySQL 인스턴스를 중지하고 응용 프로그램이 읽기 전용 쿼리와 잘 작동하는지 확인하고 싶습니다. 지금까지의 기사 MySQL Failover with Connector/J에서 알 수 있듯이 코드를 변경하지 않아도 가능합니다. 시작하려면 두 번째 경우에 관심이 있습니다. 통신 예외 (SQL 상태가 "08"로 시작). 불행하게도 이런 일이 발생하지 않습니다. 슬레이브를 중지하면 가끔 서버에서 응답하는 데 오랜 시간이 걸릴 수 있습니다. 때로는 다시 돌아 오지 않고 HTTP 연결이 끊어지는 경우도 있습니다. Tomcat 로그에서 다음 라인을 얻으십시오 :

서버로부터 성공적으로 수신 된 마지막 패킷은 N 밀리 초 전입니다. 서버에 성공적으로 전송 된 마지막 패킷은 0 밀리 초 전입니다. 여기

최대 절전 모드 구성의 조각입니다 :

<property name="hibernate.connection.driver_class">com.mysql.jdbc.ReplicationDriver</property> 
<property name="hibernate.connection.url">jdbc:mysql://masterIP,slaveIP/mydb?loadBalancePingTimeout=1500&amp;loadBalanceBlacklistTimeout=7000&amp;autoReconnect=true&amp;failOverReadOnly=false&amp;roundRobinLoadBalance=true</property> 

MySQL의 커넥터 설명서를 보면서, 나는 많은 속성 구성을 시도했지만, 신뢰할 수있는 장애 조치를 얻는 방법을 알아낼 수 없습니다.

답변

관련 문제