문제

나는 수평 분할을 알고 있습니다 ... 당신은 많은 테이블을 만들 수 있습니다.

여러 서버로 어떻게이를 수행 할 수 있습니까? 이것은 MySQL이 확장 될 수있게합니다.

X 서버에서 X 테이블을 작성 하시겠습니까?

여러 서버를 통해 분할하는 방법을 가르쳐주는 신경 쓰거나 초보자의 튜토리얼 (단계별)이있는 사람이 있습니까?

도움이 되었습니까?

해결책

MySQL과 함께 사람들은 일반적으로 불리는 것을합니다 응용 프로그램 기반 샤딩.

간단히 말하면 동일한 데이터베이스가 있습니다. 구조 여러 데이터베이스 서버에서. 그러나 동일한 데이터가 포함되지 않습니다.

예를 들어 :

Users 1 - 10000: server A
Users 10001 - 20000: server B

샤드 (물론)는 백업 기술이 아니며 클러스터에 읽기와 쓰기를 배포하기위한 것입니다.

샤드에 사용 된 기술은 예를 들어 MySQL-Proxy입니다. 이것은 Hscale이 발명 한 것이 아니며, 읽기를 배포하고 다른 백엔드 서버에 쓰는 간단한 LUA 스크립트입니다. MySQL Forge에는 많은 예가 있어야합니다.

또 다른 도구 (MySQL 프록시 기반)는 다음과 같습니다 Spockproxy. 샤딩을 향해 완전히 맞춤형. 그들은 또한 Lua를 제거했고, 대리보다 더 빨리 만들기 위해 다양한 일을했습니다. 지금까지 나는 SpockProxy 만 테스트했지만 결코 생산에서 실행하지 않았습니다.

이제 그 프록시를 제외하고, 당신도 스스로를 깎을 수 있습니다. 필수 마스터 테이블이 필요합니다.

-------------------
| userA | server1 |
| userB | server2 |
| userC | server1 |
-------------------

그런 다음 읽기를 구성하고 서버를 향해 쓰십시오. 그다지 예쁘지는 않지만 작동합니다. 다음의 장애물은 그것을 더 falt tolarant로 만드는 것입니다. 예를 들어, server1, server2 그리고 server3 각각은 작은 클러스터 여야합니다.

그리고 마지막으로, 파티션 데이터와 서버 간 지수에 대한 또 다른 흥미로운 접근 방식은 Digg의 것입니다. IDDB. 그들이 코드를 발표 한 적이 있는지 확실하지 않지만 블로그 게시물은 그것이 무엇을하는지에 대한 훌륭한 세부 사항을 제공합니다.

이것이 도움이된다면 알려주세요!

다른 팁

그러나 몇 가지 이유로이 솔루션을 클라우드로 가져 가서 멀티 테넌트로 만들고 싶다면 위의 구성이 더 어려워 질 수 있습니다. 이것에 대해 생각하다 -

  1. 시스템에 로그인하면 DB가 사용자 조직 테이블에 따라 선택 (DB 스왑)을 선택합니다.
  2. 이것은 당신이 지금 자신의 노예들과 이야기하고있는 새로운 마스터 테이블 일 것입니다.
  3. 그러나 위의 포인트 2는 스케일 아웃이 병목 현상이되지 않도록하기를 원하기 때문에 이제 샤딩이 필요합니다.

이제 문제는 아마도 노예가 일반적으로 독서를위한 마스터와 글을 쓰는 마스터를위한 Mster-Slave 종류의 env에서 어떻게이 샤드를 할 수 있는지 생각해야한다는 것입니다.

건배 ! 게리

여기에서 Hscale 0.1 발표에 작성된 내용 :

지금은 거대한 테이블을 분할해야하지만 나중에는 여러 MySQL 서버 인스턴스에 파티션을 배포하여 실제 수평 스케일을 배포하려고합니다. 가장 어려운 부분은 분산 트랜잭션 (XA)을 사용해야하거나 다른 호스트의 파티션과 관련된 거래를 허용하지 않는 거래를 다루는 것입니다.

이 프로젝트를 살펴보십시오. http://sourceforge.net/projects/hscale/ 어쩌면 그것은 당신에게 적합 할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top