18.5.12.2 디스크 데이터 개체에서 심볼릭 링크 사용
데이터 노드 파일 시스템을 Undo 로그 파일 및 테이블 스페이스 데이터 파일에서 분리하고 이들을 별도의 디스크에 배치하면 디스크 데이터 스토리지를 사용하는 MySQL Cluster의 성능을 크게 개선 할 수 있습니다. 이전 버전의 MySQL Cluster에서는 이에 대한 직접적인 지원은하지 않았지만,이 섹션에서 설명하도록 심볼릭 링크를 사용하면 이러한 분리를 실현했습니다. MySQL Cluster에서는이를 위해 심볼릭 링크를 사용할 필요가 없도록 데이터 노드 구성 매개 변수 FileSystemPathDD
, FileSystemPathDataFiles
및 FileSystemPathUndoFiles
을 지원하고 있습니다. 이러한 매개 변수에 대한 자세한 내용은 디스크 데이터의 파일 시스템 매개 변수 를 참조하십시오.
클러스터의 각 데이터 노드는 config.ini
파일에 정의 된 데이터 노드의 DataDir
에있는 ndb_
라는 디렉토리에 파일 시스템을 만듭니다. 이 예에서는 각 데이터 노드 호스트 node_id
_fs/data0
/ /data1
및 /data2
라는 별칭이 붙은 3 개의 디스크를 가지고 클러스터의 config.ini
에 다음 항목이 포함되어 있다고 가정합니다.
[ndbd default] DataDir= /data0
여기서의 목표는 각 데이터 노드 호스트에서 /data1
에 모든 디스크 데이터 로그 파일 /data2
에 모든 디스크 데이터 데이터 파일을 배치하는 것입니다.
이 예에서는 클러스터의 데이터 노드 호스트는 모든 Linux 운영 체제를 사용하고 있다고 가정합니다. 다른 플랫폼에서는 여기에 표시된 명령을 운영 체제 명령으로 대체해야하는 경우가 있습니다.
이것을 실현하려면 다음 단계를 수행합니다.
데이터 노드 파일 시스템에서 다른 드라이브를 가리키는 심볼릭 링크를 만듭니다.
shell>
cd /data0/ndb_2_fs
shell>ls
D1 D10 D11 D2 D8 D9 LCP shell>ln -s /data0 dnlogs
shell>ln -s /data1 dndata
이 시점에서 두 개의 심볼 링크가 표시됩니다.
shell>
ls -l --hide=D*
lrwxrwxrwx 1 user group 30 2007-03-19 13:58 dndata -> /data1 lrwxrwxrwx 1 user group 30 2007-03-19 13:59 dnlogs -> /data2여기에서는 노드 ID가 2 인 데이터 노드의 경우 만 보여줍니다 만, 이것을 각 데이터 노드에서 실행해야합니다.
여기에서 mysql 클라이언트에서 다음과 같이 심볼릭 링크를 사용하여 로그 파일 그룹 및 테이블 공간을 작성합니다.
mysql>
CREATE LOGFILE GROUP lg1
->ADD UNDOFILE 'dnlogs/undo1.log'
->INITIAL_SIZE 150M
->UNDO_BUFFER_SIZE = 1M
->ENGINE=NDBCLUSTER;
mysql>CREATE TABLESPACE ts1
->ADD DATAFILE 'dndata/data1.log'
->USE LOGFILE GROUP lg1
->INITIAL_SIZE 1G
->ENGINE=NDBCLUSTER;
다음과 같이 파일이 제대로 생성 및 배치 된 것을 확인합니다.
shell>
cd /data1
shell>ls -l
total 2099304 -rw-rw-r-- 1 user group 157286400 2007-03-19 14:02 undo1.dat shell>cd /data2
shell>ls -l
total 2099304 -rw-rw-r-- 1 user group 1073741824 2007-03-19 14:02 data1.dat하나의 호스트에서 여러 데이터 노드를 실행하는 경우에는 그들이 디스크 데이터 파일에 동일한 영역의 사용을 시도하지 않도록주의해야합니다. 각 데이터 노드 파일 시스템에 심볼릭 링크를 생성하면이를 쉽게 할 수 있습니다. 두 데이터 노드 파일 시스템에
/data0
를 사용하고 있지만,/data1
에 두 노드의 디스크 데이터 파일을 배치해야합니다. 이 경우 다음 것과 같은 작업을 수행 할 수 있습니다.shell>
cd /data0
shell>ln -s /data1/dn2 ndb_2_fs/dd
shell>ln -s /data1/dn3 ndb_3_fs/dd
shell>ls -l --hide=D* ndb_2_fs
lrwxrwxrwx 1 user group 30 2007-03-19 14:22 dd -> /data1/dn2 shell>ls -l --hide=D* ndb_3_fs
lrwxrwxrwx 1 user group 30 2007-03-19 14:22 dd -> /data1/dn3이 시점에서 다음과 같이 심볼릭 링크를 사용하여 로그 파일 그룹 및 테이블 공간을 만들 수 있습니다.
mysql>
CREATE LOGFILE GROUP lg1
->ADD UNDOFILE 'dd/undo1.log'
->INITIAL_SIZE 150M
->UNDO_BUFFER_SIZE = 1M
->ENGINE=NDBCLUSTER;
mysql>CREATE TABLESPACE ts1
->ADD DATAFILE 'dd/data1.log'
->USE LOGFILE GROUP lg1
->INITIAL_SIZE 1G
->ENGINE=NDBCLUSTER;
다음과 같이 파일이 제대로 생성 및 배치 된 것을 확인합니다.
shell>
cd /data1
shell>ls
dn2 dn3 shell>ls dn2
undo1.log data1.log shell>ls dn3
undo1.log data1.log