2009년 2월 26일 목요일

심볼릭링크(symbolic link)

MYD파일과 MYI파일은 심볼릭링크여도 동작한다.
파티션 용량 부족을 해결하기 위해 또는 I/O분산을 위해서 파일 본체를 별도의 디렉토리에 이동하고 데이터베이스를 나타내는 디렉토리밑에 심볼릭링크를 만드는 것이 가능하다. 

mysqld옵션(my.cnf파일)에 skip-symlink가 지정되어있으면 심볼릭링크는 사용하지 못한다. 
심볼릭링크를 사용하기 위해서는 수동으로 심볼릭링크를 만드는 방법과 CREATE TABLE문을 실행할때 특정 키워드를 지정하는 방법이 있다. 

SQL문 심볼릭링크사용예
mysql> CREATE TABLE table1 (i int) ENGINE=MYISAM DATA DIRECTORY ='/disk1/data/' INDEX DIRECTORY = '/disk2/data/';

DATA DIRECTORY에는 MYD 보존위치를 지정하고 INDEX DIRECTORY에는 MYI 보존위치를 지정한다. 

수동으로 심볼릭링크를 만드는 경우는 mysql을 정지시킨 후 작업하는 것이 안전하다. 
mysqld를 정지시킬 수 없는 경우는 SQL문으로 그 테이블을 락(lock)해놓은 후 작업한다. 

작업예
mysql> LOCK TABLES table1 WRITE;
mysql> FLUSH TABLES;

(파일 이동과 심볼릭링크 작성을 실행한다.)

mysql>UNLOCK TABLES;