2011-04-12 3 views
0

우리는 MySQL 클러스터에 여러 Tb를 넣으려고합니다. 불행히도 인덱스는 메모리에 맞지 않습니다.mysql 클러스터 테이블이 가득 찼습니다.

mysql의 한계를 극복 할 방법이 있습니까?

거기에 mysql 프로세스 범위 작업이 병렬로 있습니까?

내 데이터에는 128 개의 파티션이있는 MYisam 내부에 3D 점 (ID x y z idkey someblob)이 있습니다. NDBCLuster는 메모리 제한으로 인해 데이터를로드 할 수 없었습니다.

색인 생성이 idkey로 넘어갑니다 (이것은 미리 계산 된 peano-hilbert 키입니다). 전체 행 수는 약 10^9입니다.

감사합니다. Arman.

편집 내 설정은 2 데이터 노드 2 mysqld 하나 mdm입니다. 4 코어의 ndb 당 8Gb RAM.

전체 시스템에는 30Tb RAID6이 있습니다.
시스템은 linux Scientific LInux 6.0이며 클러스터는 소스에서 컴파일 된 7.1입니다.

+0

OS/하드웨어 설정? 오류 메시지가 표시되는 경우 유용합니다. –

+0

오류 메시지가 제목에 있습니다 : "테이블 'foo'가 가득 찼습니다. –

답변

0

MySQL이 작업에 적합하지 않은 것 같습니다 (미안). 나는 Tokyo Tyrant, MongoDB 또는 기타 분산 키 - 값 스토리지 시스템을 살펴볼 것입니다. 전문화 된 상업 제품도 있습니다.

MongoDB는 able to swap out some of it's indexes to the HD입니다. 귀하의 문제는 MySQL은 단지 그렇게 할 수 없다는 것입니다 (저는 MySQL-guy는 아닙니다).

+0

예, 아마 우리는 mysql 한계에 도달했습니다. 감사. – Arman

0

아마도 config.ini 파일을 수정하려고 할 수 있습니다.

DataMemory=15000M 
IndexMemory=2560M 

그러나 두 값이 너무 높은 경우, 당신은이 버그가 발생합니다 : missaligned 비트 맵 페이지로 인해 사용하기 수 없습니다!

그래서 아직 해결하려고합니다. 행운을 빕니다.

0

DB 테이블의 구조 만로드 할 때 동일한 문제가 발생했습니다. 즉 DataMemory 또는 IndexMemory은 도움이되지 않았습니다. 또한 테이블 수는 MaxNoOfTables의 한도에 도달하지 않았으므로 문제가되지 않습니다. 나를위한 해결책은 MaxNoOfOrderedIndexesMaxNoOfUniqueHashIndexes에 대한 값을 증가시키는 것이 었습니다.이 값은 클러스터에서 가질 수있는 최대 색인 수를 반영합니다. 따라서 DB에 많은 인덱스가 있으면 해당 변수를 증가 시키십시오. 물론 변경을 적용하려면 rolling restart을 완료해야합니다!