2014-01-23 4 views
0
내 최대 절전 모드 설정을 변경하고 (나는 현재이 아닌 여러 MySQL의 인스턴스)의 MySQL의 단일 인스턴스 사용할 수 있는지 이해하기 위해 노력하고있어

:단일 MySQL의 인스턴스를 여러 MySQL의 인스턴스 대 + 최대 절전 모드 구성

@Entity 
@Table(name="Foo", schema="SchemaA") 
public class FooSchemaA 

@Entity 
@Table(name="Bar", schema="SchemaB") 
public class BarSchemaB 

<bean name="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 
    <property name="driverClass" value="com.mysql.jdbc.Driver"/> 
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/SchemaA"/> 
    <property name="user" value="root"/> 
    <property name="password" value="password"/> 
</bean> 

복잡성가 온다 내가 (다른 상자에) 5 회를 실행하는 자바 응용 프로그램을 가지고 : 나는 자바 응용 프로그램은 다음과 같이 예제를 구성, 최대 절전을 사용하여 2 스키마 이야기가있다. Java 응용 프로그램이 데이터를 공유 할 필요가 없기 때문에 각 상자에 하나씩 5 개의 MySQL 인스턴스 (동일한 스키마가 있음)를 호스팅 할 수 있습니다.

이제 HA 솔루션으로 이동하려고합니다. 내가 현재 설정을 유지한다면 나는 10 개의 MySQL 인스턴스로 끝날 것이다. 단지 기분이 좋지 않습니다. 더 좋은 방법이 있습니까?

답변

0

HA 데이터베이스를 설정하는 것이 어렵지 않으며 응용 프로그램과 동일한 상자에 데이터베이스를 호스팅하는 경우 추가 이점이 없습니다. 일반적으로 서버 응용 프로그램을 호스팅하는 상자는 특히 HA 데이터베이스가 필요한 경우 RDBMS를 호스팅하는 상자 (예 : 데이터 백업)와는 다른 관리/유지 관리가 필요합니다.

RDMS가있는 하나의 상자가 응용 프로그램의 모든 요청을 처리 할 수 ​​있다고 가정하면 데이터베이스를 별도의 상자로 이동하고 응용 프로그램에 "// virt-address : 3306/App01_SchemaA", "// virt- 주소 : 3306/App01_SchemaB "등."virt-address "는로드 밸런서를 통해 실제 주소 (예 :"db01-address ","db02-address ")로 확인되는 가상 주소입니다. 가상 주소를 사용하는 것은 HA 설정의 첫 번째 단계입니다. 하나의 데이터베이스가 다운되면로드 밸런서는 트래픽을 다른 서버로 향하게 할 수 있습니다. 물론 응용 프로그램은 이러한 전환이 발생할 때 데이터베이스 연결을 새로 고칠 수 있어야합니다.

두 번째 단계는 HA 설정에서 RDBMS를 구성하는 것입니다. 일반적인 접근 방식은 마스터/슬레이브 설정입니다 (이제 1 개의 RDBMS가있는 1 개의 상자가 있으므로 1 개의 HA 설정에 대해 걱정할 필요가 있습니다). 그리고 마스터가 다운되는 즉시 슬레이브를 마스터로 전환하십시오. 단점은 원래 마스터가 다시 작동하면 다시 동기화되도록 수동 작업을해야한다는 것입니다. 또 다른 접근법은 마스터/마스터를 가지고있어서 슬레이브를 마스터로 전환 할 필요가 없다는 것입니다. 단점은 설정하기가 더 어렵다는 것입니다. 두 데이터베이스 모두 쓰기를 동기화해야합니다.

HA 설정에 관계없이 1 개의 설정을 유지하는 것이 항상 2 개의 개별 설정을 유지하는 것보다 낫습니다. 재해 복구에 대해 생각해보고 싶을지도 모릅니다 (한 곳의 모든 '라이브'RDBMS 상자가 단락되었을 때 무엇을 할 것입니까?).

+0

@vanOekel 주셔서 감사합니다. HA에 대한 설명이 유용합니다. 아주 솔직히 말해서 내가 지금 당장 가지고있는 문제는 아니지만 나의 질문은 mysql 인스턴스에서 동일한 스키마를 여러 번 가질 수 있는지 (또는 런타임에 최대 절전 모드에 대해 다른 스키마를 가질 수 있는지) 여부이다. 동일한 애플 리케이션의 여러 인스턴스 (동일한 최대 절전 모드 구성으로)가 실행될 수 있습니다. 이해가 되나요? – James

+0

@James "다른 스키마 (런타임)"의 [this] (http://stackoverflow.com/q/10192241/3080094)와 같은 것? – vanOekel

+0

그런 종류의 일이지만 유감스럽게도 스키마가 최대 절전 모드 주석 (연결 문자열에서 하나뿐 아니라)에 지정되어 있으므로 작동하지 않습니다. – James