18.5.12.1 MySQL Cluster 디스크 데이터 객체
MySQL Cluster 디스크 데이터 스토리지는 여러 디스크 데이터 객체를 사용하여 구현됩니다. 여기에는 다음이 포함됩니다.
테이블 공간은 다른 디스크 데이터 객체에 대한 컨테이너 역할을합니다.
Undo 로그 파일은 트랜잭션을 롤백하는 데 필요한 정보를 복원합니다.
하나 이상의 Undo 로그 파일이 로그 파일 그룹에 할당 된 로그 파일 그룹은 테이블 스페이스에 할당됩니다.
데이터 파일은 디스크 데이터 테이블 데이터가 저장됩니다. 데이터 파일은 테이블 공간에 직접 할당됩니다.
Undo 로그 파일 및 데이터 파일은 각 데이터 노드의 파일 시스템에있는 실제 파일입니다. 기본적으로 MySQL Cluster config.ini
파일에 지정된 DataDir
의 ndb_
에 배치됩니다. 여기에서 node_id
_fsnode_id
는 데이터 노드의 ID입니다. Undo 로그 파일이나 데이터 파일을 만들 때 파일 이름의 일부로 절대 또는 상대 경로를 지정하면이를 다른 위치에 배치 할 수 있습니다. 이러한 파일을 생성하는 명령문은이 섹션의 뒷부분에서 설명합니다.
MySQL Cluster의 테이블 스페이스 및 로그 파일 그룹은 파일로 구현되어 있지 않습니다.
모든 디스크 데이터 오브젝트 파일로 구현된다고는 것은 아니지만, 모두 동일한 네임 스페이스를 공유합니다. 즉, 각 디스크 데이터 개체 (단순히 특정 형태의 각 디스크 데이터 객체라고뿐만 아니라) 고유의 이름이 붙어 있어야합니다. 예를 들어, 테이블 스페이스 및 로그 파일 그룹에 모두 dd1
라는 이름을 붙일 수 없습니다.
모든 노드 (관리 노드 및 SQL 노드 포함)를 포함 MySQL Cluster를 이미 작성했다고 가정하면 디스크에 MySQL Cluster 테이블을 만들기위한 기본 단계는 다음과 같습니다.
로그 파일 그룹을 만들고이 하나 이상의 Undo 로그 파일을 지정합니다 (Undo 로그 파일은 undofile라는 것도 있습니다).
참고Undo 로그 파일은 디스크 데이터 테이블에서만 필요합니다. 메모리에만 저장되는
NDBCLUSTER
테이블에서는 사용되지 않습니다.테이블 공간을 만들고 테이블 공간에 로그 파일 그룹 및 하나 이상의 데이터 파일을 지정합니다.
데이터 저장을 위해이 테이블 공간을 사용하는 디스크 데이터 테이블을 만듭니다.
이러한 각 작업은 다음 예와 같이 mysql 클라이언트 또는 기타의 MySQL 클라이언트 응용 프로그램에서 SQL 문을 사용하여 수행 할 수 있습니다.
CREATE LOGFILE GROUP
을 사용하여lg_1
라는 로그 파일 그룹을 만듭니다. 이 로그 파일 그룹은undo_1.log
및undo_2.log
라는 2 개의 Undo 로그 파일로 구성됩니다. 초기 크기는 각각 16M 바이트와 12M 바이트입니다. (Undo 로그 파일의 기본 초기 크기는 128M 바이트입니다.) 옵션에서 로그 파일 그룹의 Undo 버퍼 크기를 지정하거나 기본값 8M 바이트가되는 것을 허용 할 수 있습니다. 이 예에서는 Undo 버퍼의 크기를 2 M 바이트로 설정합니다. 로그 파일 그룹은 Undo 로그 파일 함께 작성해야합니다. 따라서 다음의CREATE LOGFILE GROUP
문undo_1.log
을lg_1
에 추가합니다.CREATE LOGFILE GROUP lg_1 ADD UNDOFILE 'undo_1.log' INITIAL_SIZE 16M UNDO_BUFFER_SIZE 2M ENGINE NDBCLUSTER;
로그 파일 그룹에
undo_2.log
을 추가하려면 다음ALTER LOGFILE GROUP
문을 사용합니다.ALTER LOGFILE GROUP lg_1 ADD UNDOFILE 'undo_2.log' INITIAL_SIZE 12M ENGINE NDBCLUSTER;
몇 가지주의 사항 :
여기에서 사용되는
.log
파일 확장자는 필수가 없습니다. 그것은 단순히 로그 파일을 쉽게 인식 할 수 있도록하기 위해 사용하고 있습니다.모든
CREATE LOGFILE GROUP
및ALTER LOGFILE GROUP
문에ENGINE
절을 포함해야합니다. MySQL Cluster NDB 7.3 이상에서는이 조항에 허용되는 값은NDBCLUSTER
와NDB
뿐입니다.중요특정 시점에서 동일한 MySQL Cluster는 최대 하나의 로그 파일 그룹 만 존재할 수 없습니다.
ADD UNDOFILE '
을 사용하여 로그 파일 그룹에 Undo 로그 파일을 추가하면 클러스터의 각 데이터 노드의filename
'DataDir
에있는ndb_
디렉토리에node_id
_fsfilename
이라는 파일이 생성됩니다. 여기에서node_id
는 데이터 노드의 ID입니다. 각 Undo 로그 파일의 크기는 SQL 문으로 지정됩니다. 예를 들어, MySQL Cluster에 4 개의 데이터 노드가 포함되어있는 경우 여기에 나와ALTER LOGFILE GROUP
문은 4 개의 Undo 로그 파일 (4 개의 각 데이터 노드의 데이터 디렉토리에 하나씩)을 만듭니다. 이러한 각 파일의 이름은undo_2.log
이며, 각 파일 크기는 12M 바이트입니다.UNDO_BUFFER_SIZE
는 사용 가능한 시스템 메모리의 양에 의해 제한됩니다.CREATE LOGFILE GROUP
문 자세한 내용은 섹션 13.1.14 "CREATE LOGFILE GROUP 구문" 을 참조하십시오.ALTER LOGFILE GROUP
대한 자세한 내용은 섹션 13.1.3 "ALTER LOGFILE GROUP 구문" 을 참조하십시오.
이 시점에서 데이터를 저장하기 위해 MySQL Cluster 디스크 데이터 테이블에서 사용되는 파일을 저장하는 테이블 공간을 만들 수 있습니다. 테이블 공간은 특정 로그 파일 그룹에 연결됩니다. 새 테이블 공간을 만들 때는 Undo 로깅에 사용되는 로그 파일 그룹을 지정해야합니다. 데이터 파일도 지정해야합니다. 테이블 공간이 작성되면 추가 데이터 파일을 테이블 공간에 추가 할 수 있습니다. 테이블 스페이스에서 데이터 파일을 제거 할 수 있습니다 (데이터 파일을 삭제하는 예는이 섹션의 뒷부분에서 설명합니다).
로그 파일 그룹으로
lg_1
를 사용하는ts_1
라는 테이블 공간을 작성한다고 가정합니다. 이 테이블 스페이스는data_1.dat
및data_2.dat
라는 이름으로 초기 크기가 각각 32 M 바이트 및 48M 바이트의 2 개의 데이터 파일이 저장됩니다. (INITIAL_SIZE
의 기본 값은 128M 바이트입니다.) 이것은 다음과 같이 두 개의 SQL 문을 사용하여 실행할 수 있습니다.CREATE TABLESPACE ts_1 ADD DATAFILE 'data_1.dat' USE LOGFILE GROUP lg_1 INITIAL_SIZE 32M ENGINE NDBCLUSTER; ALTER TABLESPACE ts_1 ADD DATAFILE 'data_2.dat' INITIAL_SIZE 48M ENGINE NDBCLUSTER;
CREATE TABLESPACE
문은 데이터 파일data_1.dat
를 포함하는 테이블 스페이스ts_1
을 만들고ts_1
를 로그 파일 그룹lg_1
에 연결합니다.ALTER TABLESPACE
는 두 번째 데이터 파일 (data_2.dat
)를 추가합니다.몇 가지주의 사항 :
Undo 로그 파일의 예에서 사용한
.log
파일 확장자의 경우와 마찬가지로.dat
파일 확장자에도 특별한 의미는 없습니다. 단순히 데이터 파일을 쉽게 인식 할 수 있도록 사용되고 있습니다.ADD DATAFILE '
을 사용하여 테이블 스페이스에 데이터 파일을 추가하면 클러스터의 각 데이터 노드의filename
'DataDir
에있는ndb_
디렉토리에node_id
_fsfilename
이라는 파일이 생성됩니다. 여기에서node_id
는 데이터 노드의 ID입니다. 각 데이터 파일의 크기는 SQL 문을 지정합니다. 예를 들어, MySQL Cluster에 4 개의 데이터 노드가 포함되어있는 경우 여기에 나와ALTER TABLESPACE
문은 4 개의 각 데이터 노드의 데이터 디렉토리에 하나씩 4 개의 데이터 파일을 만듭니다. 이러한 각 파일의 이름은data_2.dat
이며, 각 파일 크기는 48M 바이트입니다.모든
CREATE TABLESPACE
및ALTER TABLESPACE
문에는ENGINE
절을 포함해야합니다. 테이블 스페이스는 테이블 스페이스와 같은 스토리지 엔진을 사용하는 테이블 만 작성할 수 있습니다. MySQL Cluster NDB 7.3에서는이 조항에 허용되는 값은NDBCLUSTER
와NDB
뿐입니다.CREATE TABLESPACE
및ALTER TABLESPACE
문에 대한 자세한 내용은 섹션 13.1.18 "CREATE TABLESPACE 구문" 및 섹션 13.1.8 "ALTER TABLESPACE 구문" 을 참조하십시오.
이 시점에서 디스크 테이블 스페이스
ts_1
에 인덱스가없는 컬럼을 포함하는 테이블을 만들 수 있습니다.CREATE TABLE dt_1 ( member_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, last_name VARCHAR(50) NOT NULL, first_name VARCHAR(50) NOT NULL, dob DATE NOT NULL, joined DATE NOT NULL, INDEX(last_name, first_name) ) TABLESPACE ts_1 STORAGE DISK ENGINE NDBCLUSTER;
TABLESPACE ... STORAGE DISK
옵션은 디스크 데이터 스토리지 용으로 테이블 스페이스ts_1
를 사용하도록NDBCLUSTER
스토리지 엔진에 지시합니다.참고CREATE TABLE
또는ALTER TABLE
문에서 열 정의의 일부로STORAGE
절을 사용하면 개별 열을 디스크와 메모리에 모두 저장 위치를 지정할 수도 있습니다.STORAGE DISK
를 지정하면 컬럼은 디스크에 저장되어STORAGE MEMORY
를 지정하면 인 메모리 스토리지가 사용됩니다. 자세한 내용은 섹션 13.1.17 "CREATE TABLE 구문" 을 참조하십시오.다음과 같이 테이블
ts_1
이 작성되면 다른 MySQL 테이블의 경우와 마찬가지로INSERT
,SELECT
,UPDATE
및DELETE
문을 실행할 수 있습니다.여기에서 정의 된 테이블
dt_1
의 경우dob
및joined
컬럼 만이 디스크에 저장됩니다. 그 이유는id
,last_name
, 그리고first_name
컬럼에 인덱스가 있기 때문에 이러한 컬럼에있는 데이터를 RAM에 저장되기 때문입니다. MySQL Cluster NDB 7.3 및 MySQL Cluster NDB 7.4에서는 인덱스없이 열만 디스크에 저장할 수 인덱스 및 인덱스 된 컬럼 데이터는 계속 메모리에 저장됩니다. 인덱스의 사용과 RAM의 저장의 이러한 트레이드 오프는 디스크 데이터 테이블을 설계 할 때 유의할 필요가 있습니다.
성능 고려 데이터 노드 파일 시스템에서 분리 된 물리적 디스크에 디스크 데이터 파일을 유지하는 경우 디스크 데이터 스토리지를 사용하는 클러스터의 성능이 크게 향상됩니다. 탁월한 이점을 얻기 위해서는 클러스터의 데이터 노드마다이를 실행해야합니다.
ADD UNDOFILE
및 ADD DATAFILE
는 파일 시스템의 전체 경로와 상대 경로를 사용할 수 있습니다. 상대 경로는 데이터 노드의 데이터 디렉토리에 상대적으로 계산됩니다. 심볼릭 링크를 사용할 수 있습니다. 자세한 내용 및 예제는 섹션 18.5.12.2 "디스크 데이터 개체에서 심볼릭 링크 사용" 을 참조하십시오.
이들을 사용하는 로그 파일 그룹, 테이블 스페이스 및 디스크 데이터 테이블은 특정 순서로 작성해야합니다. 이러한 개체를 제거 할 때에도 마찬가지입니다.
로그 파일 그룹은 테이블 공간에서 사용되는 한, 삭제할 수 없습니다.
테이블 스페이스는 데이터 파일을 포함하고있는 한, 삭제할 수 없습니다.
테이블 공간을 사용하는 테이블이 남아있는 한, 테이블 공간에서 어떤 데이터 파일도 삭제할 수 없습니다.
파일이 작성된 테이블 스페이스와 다른 테이블 스페이스에 관련된 생성 된 파일은 삭제할 수 없습니다. (Bug # 20053)
예를 들어,이 섹션에서 지금까지 만들어 온 모든 개체를 삭제하려면 다음 문을 사용합니다.
mysql>DROP TABLE dt_1;
mysql>ALTER TABLESPACE ts_1
->DROP DATAFILE 'data_2.dat'
->ENGINE NDBCLUSTER;
mysql>ALTER TABLESPACE ts_1
->DROP DATAFILE 'data_1.dat'
->ENGINE NDBCLUSTER;
mysql>DROP TABLESPACE ts_1
->ENGINE NDBCLUSTER;
mysql>DROP LOGFILE GROUP lg_1
->ENGINE NDBCLUSTER;
이러한 진술은 여기에 제시된 순서대로 수행해야합니다. 그러나 2 개의 ALTER TABLESPACE ... DROP DATAFILE
명령문은 어떤 순서로도 실행할 수 있습니다.
INFORMATION_SCHEMA
데이터베이스 FILES
테이블을 쿼리하면 디스크 데이터 테이블에 의해 사용되는 데이터 파일에 대한 정보를 얻을 수 있습니다. 추가 " NULL
행」에는 Undo 로그 파일에 대한 추가 정보가 표시됩니다. 자세한 내용 및 예제는 섹션 21.30.1 "INFORMATION_SCHEMA FILES 테이블" 을 참조하십시오.
ndb_desc 유틸리티를 사용하면 디스크 데이터 테이블 또는 테이블 파티션마다 할당 된 및 디스크 공간에 대한 정보를 표시 할 수 있습니다. 자세한 내용은 섹션 18.4.10 "ndb_desc - NDB 테이블보기" 를 참조하십시오.