2010-12-24 2 views
2

우리는 주 MySQL 데이터베이스에 대한 복제 설정 가능성을 조사하고 있으며 복제 설정은 꽤 간단하지만 응용 프로그램 구현은 다소 완고한 것처럼 보입니다.Rails 3를 사용하는 MySQL 복제를위한 최상의 구현 방법은 무엇입니까?

내 첫번째 생각은 모두가 마스터 예정 쿼리 (CREATE, INSERT, UPDATE를) 쓰기와, 마스터 - 슬레이브 구성 및 RW-분할을 설정하는 것, 그리고 모든 슬레이브 것 쿼리 (SELECT)를 참조하십시오. 같은 MySQL proxy 또는 DBSlayer 모든 MySQL의 연결을위한 독립적 인 미들웨어 계층을 사용하여

  1. : 그것을 읽어 데,이 우리의 응용 프로그램과이를 구현하는 방법에 대한 옵션은 기본적으로이 있다는 것을 보인다. 그러나 전자는 Alpha에 있고 후자는 제한된 문서를 가지고 있습니다.
  2. 프레임 워크에서 RW 분할을 달성하기 위해 Octopus과 같은 Ruby 기반 gem/plugin을 사용합니다.

마스터 - 슬레이브 설정으로 이동하려면 앞으로 무엇을 할 것을 권장합니까?

내가 가진 다른 생각은 마스터 - 마스터 구성을 사용하는 것이지만 이러한 설정의 구현에 대해서는 확신 할 수 없습니다.

생각하십니까?

답변

2

일반적으로 컨텍스트를 이해할 수 있기 때문에 프레임 워크에서 R/W 분할을 수행해야합니다. PHP에서는 두 개의 연결을 유지함으로써이 작업을 수행합니다. 하나는 쓰기 용이고 다른 하나는 읽고 쓰는 것입니다. 그 이유는 쿼리 유형별로 분할하는 것만 큼 간단하지 않기 때문입니다. 예를 들어, 쓰기 연결에서 트랜잭션을 시작한 경우 트랜잭션 내부에서 모든 읽기를 수행하기를 원합니다. 그렇지 않으면 트랜잭션 외부에있을 것이므로 오래된 데이터를 얻거나 잠금으로 끊어지게됩니다. 작업 부하가 경우를 제외하고

정말 읽기 무거운 복제는 복제 지연으로 확장 솔루션을 사용하면 날짜 결과에서 얻을 원인이됩니다하지입니다. 마스터 - 마스터는 특별하지 않습니다. 마스터 - 슬레이브의 두 인스턴스 일 뿐이지 만, 두뇌에 악영향을 끼치고 싶을 때 두 마스터에게 모두 쓰려고하는 실수를하지 않아야합니다.

내가 정말 좋아하는 구성은 mmm과 마스터 - 마스터 쌍을 사용하고 있습니다. 따라서 페일 오버 및 리던던시는 응용 프로그램에 쉽고 투명하게 이루어지며 훌륭하게 작동합니다.