http://www.mysqlkorea.co.kr
한글매뉴얼 5.0 , 한글매뉴얼 5.1 , MySQL 5.1 HA , 사용자매뉴얼
공지사항  
뉴스  
질문과 답변
DBA
Developer
Cluster
토크박스  
이벤트  
서포트 티켓  
최신글
foreign key 설정…
인텍스 추가 등에…
mysql master - s…
다대다 관계에서 …
mysql my파일과 …
 
질문과 답변 (Cluster) > 커뮤니티 존 > 질문과 답변 (Cluster)
클러스터 관련 문의 드립니다.
글쓴이 : 호야1234   날짜 : 11-01-06 15:04   조회수 : 5705
안녕하세요.
 
저희는 대용량의 DML이 발생할것을 고려해서 mysql 클러스터를 고려중입니다.
 
MySQL 클러스터 구조는 비공유(shared nothing storage) 스토리지라는데 오라클만 사용을 해서 비공유라는게 어떤 의미인가요?
동시에 해당 데이터에 접근이 안되는건가요?
 
비공유면 제약사항이 없을까요?
 
5.0에서는 모든 데이터를 메모리에 올리고 5.1부터는 메모리와 저장장치가 유동적으로 자료를 교환하는 방식을 지원한다고 하는데
어떤 방식인가요?
royster
1. MySQL Cluster 비공유(shared nothing storage)은
실제 data가 저장되는 storage를 서로 공유하지 않는다는 의미입니다.(데이타 storage 2중화)

예를들자면 데이타 storage 1개가 장해가 발생하더라도 무정지 서비스가 가능하다는 뜻입니다.
storage를 공유하는 구조에서는 서비스 중단이겠죠~~

2. 5.0에서는 모든 데이터를 메모리에 올리고 5.1부터는 메모리와 저장장치가 유동적으로 자료를 교환하는 방식을 지원한다고 하는데 어떤 방식인가요?

Memory에 데이타를 올릴수도 있으며 , Disk로 데이타를 내릴수도 있다는 의미입니다.
memory의 용량에따라 덩치가큰 table들은 Disk로 내려서 사용하면 편리하겠네요~~.
민족
대용량의 DML 처리를 위해서 클러스터를 쓰는게 아닙니다.

단순 대용량의 DML 이라면 단일 서버가 좀더 효율이 좋습니다.
호야1234
민족님 말씀이 맞습니다.

단순 대용량 DML만 있는건 아니고요.. read 하는 사용자도 많고
무정지 서비스를 위해서 클러스터를 고려하는것 입니다.

그리고 roster님이 적어주신 storage를 서로 공유하지 않는다게 A 노드에서 저장한 데이터를 다른 노드에서는 데이터를 볼수 없다는 의미인가요?

답변 주신거로 이해하기로는 각 노드별로 각각 스토리지가 별도로 존재하고 스토리지 간에 데이터 공유가 안된다는 의미같은데 맞나요?
스토리지간에 공유가 없다면 A 노드에서 저장된 데이터를 다른 노드에서는 어떻게 참조를 할수 있나요?
민족
스토리지를 공유 하지 않는다는건..

데이터 를 복재하여 동일한 데이터를 2개 만드는것이 MySQL 클러스터의 기본 개념 입니다.

(오라클 RAC 와 기본 개념이 틀립니다.

오라클은 하나의 데이터 스토리지에 각각의 서버가 동시에 억세스가 이루어 지지만

MySQL 은 이 데이터 스토리지를 2중화 하여 각각의서버가 그 2중화된 데이터에 접속을 하는겁니다.

스토리지 공유를 안한다는건 그래서 공유를 하지 않기 때문에.. 한쪽 스토리지가 장애가 나더라도 동일한

다른 스토리지가 있기 때문에 서비스가 중지 없이 가능하다는 것입니다.)

복제 데이터를 몇개로 만드는지는 구성에 따라 틀려집니다.

따라서 동일한 데이터를 A 노드와 .. B 노드에 각각 갖고있고..

변경작업은 두 노드에서 동시에 변경이 이루어집니다.


그리고 이 데이터에 접속하는건.. SQL 노드 라고 해서 이노드를 통해서

각각의 데이터 노드에 접속하여 데이터 억세스가 이루어 집니다.

동일한 데이터 이기 때문에 어느 노드에 접속을 하여도 동일한 데이터를 볼수 있습니다.
호야1234
민족님 답변 감사합니다.

한가지만 더 질문 드릴께요..

데이터를 관리하는 Data Node와 데이터에 접속하는 SQL Node가 한 셋트로 사용되나요? 아니면 SQL노드는 데이터에 엑세스되는 창구로만 보면 되는건가요?

만약에 데이터노드와 SQL노드가 셋트라면 .. 전체 데이터가 1테라이고 노드가 10노드이면

데이터노드용 서버 10대, SQL노드용 서버 10대 총 20대가 필요하고 1테라의 동일한 데이터가 데이터노드별로 10테라가 필요한거죠?

그리고 클러스터로 운영중에 사용자가 늘어나면은 노드를 늘려야 할것 같은데..
DML 사용자나 select 사용자가 많아지면은 Data 노드와 SQL노드를 같이 늘려주면 되는건가요?

데이터노드의 정의가 클러스터의 데이터를 저장하는 노드
SQL노드는 클러스터 데이터에 접근하는 노드
라고 정의가 되어 있어서 SQL노드를 통해서 데이터노드에 접근을 해야 될것 같은데 그러면 읽던지 쓰던지 사용자가 증가되면은 scale -out 해서 Data, SQL 둘다 증가를 시켜주어야 할것 같은데.. 맞나요?
민족
SQL 노드는 데이터에 엑세스 되는 창구라고 보시면 될듯 하네요..

쿼리가 들어오면 그 쿼리를 파싱 하여 관련 데이터가 어디있는지.. 데이터 노드를 통해서 찾아서

그 데이터를 갖고와 다시 사용자에게 보여주는 그런 역활을 한다고 보시면 됩니다.

데이터가 1테라 이면... 이걸 몇게의 노드로 분산하여 이중화 할건지 계산 하셔야 됩니다.

그리고 1테라의 데이터라면 인덱스 또한 만만치 않을탠대요.. 인덱스 사이즈는 모두 메모리로

사용 해야 됩니다. (제약사항입니다.) 따라서.. 데이터 노드의 서버 스팩 메모리 수준도 상당히 좋아야 합니다.



클러스터 운영중에 사용자가 늘어났을경우.... 데이터 노드... sql 노드 모두 늘려주면 좋습니다.

데이터 노드를 추가한다는건....

예를들어서 오라클의 파티셔닝 기능처럼... 노드를 추가 할때마다 데이터를 나눠 가지고있기 때문에..

부하를 줄일수 있을것이고..


쿼리 파싱, 소팅, 세션 관련하여 부하가 생긴다면... SQL 노드를 추가 하시면 됩니다.



1 테러 데이터 일경우면... 메모리 제약 사항 때문에 인덱스 사이즈도 상당히 중요합니다.
이전글 서비스용으로 클러스터 구성을 고려하고 있습니다. 
다음글 관리 서버에 대해 질문 있습니다. 
MySQL Korea 사이트의 컨텐츠 소유권은 (주)상상이비즈에 있으므로 무단전재를 금합니다.
Copyright ⓒ ssebiz All Rights Reserved.