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)
메모리 질문과 그외 질문드립니다.
글쓴이 : 아령빵   날짜 : 12-06-14 15:50   조회수 : 5719
안녕하세요.
Replication 구조에 Innodb를 사용하다가 MySQL Cluster로 변경하려고 하는 데 여러가지 어려움이 있어서 질문드립니다.
 
1. 메모리
  - DataMemory = 30720M, IndexMemory = 8192M 로 설정해서 data node를 올렸습니다.
    처음 실행 후에 메모리 사용량을 보면 약 40GB를 사용하고 있었습니다.
    Data를 insert를 하면서 메모리 사용량이 40GB 이상으로 점점 증가를 하는 것을 봤습니다.
    미리 설정해둔 40GB 내에서 데이터를 insert해서 사용하는게 아닌가요?
    Linux환경에서 top 명령어로 확인 했을 때, 아래와 같습니다.
   
    Mem:  74122180k total, 59916920k used, 14205260k free,   310132k buffers
    PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+   COMMAND
    15   0    37.9g 36g   3408 R  25.5    51.9        85:17.01 ndbd
   
    Data양이 늘어나면서 mysql이 아닌 시스템에서 사용하는 메모리가 늘어나서 그런건가요..?
 
2. Dump를 이용해 insert할 때 속도
  - mysqldump를 이용해 스키마, 데이터 따로 dump를 뜬 후에, 데이터를 복구하고 있습니다.
    "mysql -uroot database < data.sql" 이렇게 해서 데이터를 insert하고 있는 데요,
    Data node의 insert 속도가 1시간이 지나고 나면 1/4 로 떨어집니다. 두번 시도를 했지만 동일한 문제가 생겼습니다.
    SQL node와 data node가 다른 머신에 설치 되어 있어서 네트워크 문제인가도 확인해봤지만 네트워크 상에 문제는 없었습니다.
    Data 양이 많아지면서 insert속도가 느려진건가요? 아니면 다른 무슨 이유가 있는 지 궁금합니다.
    다른 방법으로 데이터를 빠르게 복구하는 방법은 없나요?
 
데이터 양이 60GB정도되고, 구성은 M(1),SQL(3),Data(6)로 데이터 노드 하나당 메모리는 74G 입니다.
읽어 주셔서 감사합니다.. 답변 기다리고 있겠습니다:)
 
 
 
    
  
taeguni
1. 설정하신 메모리는 데이터와 인덱스에 대해서 설정한 부분이며, 말씀하신것과 같이 시스템 리소스도 메모리를 쓰기 때문에, 시스템 동작에 따라서, 메모리의 사용량이 유동이 있을 수 있습니다. 또한, ndb 노드에도 각종 버퍼 메모리를 설정하게 되는데, 그런 버퍼 메모리의 사용량에 따른 유동 지수도 있을 수 있겠네요.

2. sql 노드의 설정에서 [mysqldump] max_allowed_packet 의 크기를 1G 이상으로 키우고, mgm 노드의 config.ini 파일에서
[TCP DEFAULT]영역에 SendBufferMemory, ReceiveBufferMemory 의 크기를 4M 이상으로 조정해보고 다시 시도해보시면, 도움이 될 수 있을 것 같네요.
참고로, ndb cluster에서는 데이터 타입이 중요합니다. 데이터 필드 타입을 최적화하여, 작은 사이즈를 설정할 수록 보다 나은 퍼포먼스를 얻을 수 있습니다.
royster
1. 메모리
MySQL Cluster는 ndb node의 메모리 out 혹은 메모리 스와핑 이슈가 발생될수 있습니다.
그러므로 ndbd node의 물리적인 메모리는 다소 여유롭게  구성하는게 여러모로 유리합니다.

2.  Dump를 이용해 insert할 때 속도
MySQL Cluster에서는 mysqldump 유틸리티 이외 아래 방법으로도 가능합니다.
백업 : mgm node 에서 START BACKUP 활용
복구 : ndb_restore 유틸리티 활용
민족
데이터 노드가 6개 이네요... 이렇게 구성 하시면.. 파티셔닝 으로 인하여 성능 저하가 발생 할수있습니다.

빠르게 구성을 하고 싶으시면.. NDB 노드를 2개로만  startup 한상태에서 import 하시고 그 이후 다른 노드들을

기동 해보시기 바랍니다.
민족
예전에 성능 테스트 할때 varchar 타입보다 char 타입이 성능이 더 잘 나왔었습니다. 물론 그에 따른 공간 문제가 있을수 있는데여... 이부분이 이슈가 아니라면 varchar 랑 char 랑 변경후 비교 해보시기 바랍니다.
민족
그리고 담에 댓글에는 config 파일도 같이 올려주세여~
뽕쟁이
알고 있지만, 공유 하기 싫음..ㅋㅋ
이전글 설치가 된듯 한데 왜 DB Sync가 안될까요? 
다음글 ndbd start 또는 --initial 때 
MySQL Korea 사이트의 컨텐츠 소유권은 (주)상상이비즈에 있으므로 무단전재를 금합니다.
Copyright ⓒ ssebiz All Rights Reserved.