• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 1. 최적화 개요
    2. SQL문 최적화
    3. 최적화 및 인덱스
    4. 데이터베이스 구조의 최적화
    5. InnoDB 테이블의 최적화
    6. MyISAM 테이블의 최적화
    7. MEMORY 테이블 최적화
    8. 쿼리 실행 계획의 이해
    9. 버퍼링과 캐시
    10. 잠금 작업의 최적화
    11. MySQL 서버의 최적화
    1. 시스템 요소 및 스타트 업 파라미터의 튜닝
    2. 서버 파라미터의 튜닝
    3. 디스크 I / O 최적화
    1. 심볼릭 링크 사용
    4. 메모리 사용 최적화
    5. 네트워크 사용의 최적화
    6. 스레드 풀 플러그인
    12. 성능 측정
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

8.11.3.1 심볼릭 링크 사용

8.11.3.1.1 Unix에서 데이터베이스에 대한 심볼릭 링크 사용
8.11.3.1.2 Unix 기반 MyISAM에 대한 심볼릭 링크 사용
8.11.3.1.3 Windows에서 데이터베이스에 대한 심볼릭 링크 사용

데이터베이스와 테이블을 데이터베이스 디렉토리에서 다른 장소로 이동하여 그들을 새로운 위치로 심볼릭 링크로 대체 할 수 있습니다. 이렇게하고 싶다고 생각할 수있는 것은, 예를 들어, 데이터베이스를 더 많은 여유 공간 파일 시스템으로 이동하거나 테이블을 다른 디스크에 분산시켜 시스템의 속도를 높일 경우입니다.

InnoDB 테이블의 경우 섹션 14.5.4 "테이블 공간의 위치 지정" 에 설명 된대로 심볼릭 링크 대신 CREATE TABLE 문에서 DATA DIRECTORY 절을 사용합니다. 이 새로운 기능은 지원되는 크로스 플랫폼 기술입니다.

이렇게하려면 권장되는 방법은 데이터베이스 디렉토리 전체 다른 디스크에 대한 심볼릭 링크를 만드는 것입니다. MyISAM 테이블의 심볼 링크 생성은 최후의 수단으로합니다.

데이터 디렉토리의 위치를​​ 확인하려면 다음 문을 사용합니다.

 SHOW VARIABLES LIKE 'datadir';
8.11.3.1.1 Unix에서 데이터베이스에 대한 심볼릭 링크 사용

Unix에서 데이터베이스의 심볼릭 링크를 만드는 방법은 먼저 공간이있는 디스크에 디렉토리를 작성하고 MySQL 데이터 디렉토리에서 그것에 대한 소프트 링크를 작성하는 것입니다.

 shell> mkdir /dr1/databases/test
 shell> ln -s /dr1/databases/test /path/to/datadir

MySQL은 하나의 디렉토리에서 여러 데이터베이스 연결을 지원하지 않습니다. 데이터베이스 디렉토리와 심볼릭 링크의 대체 데이터베이스간에 심볼릭 링크를 생성하지 않는 한 작동합니다. MySQL 데이터 디렉토리에 데이터베이스 db1 가 있고 db1 을 가리키는 기호 링크 db2 를 만들려고합니다.

 shell> cd /path/to/datadir
 shell> ln -s db1 db2

그 결과, db1 의 모든 테이블 tbl_a 은 db2 에도 테이블 tbl_a 로 표시됩니다. 클라이언트가 db1.tbl_a 를 업데이트하고 다른 클라이언트가 db2.tbl_a 를 업데이트하면 문제가 발생할 수 있습니다.

8.11.3.1.2 Unix 기반 MyISAM에 대한 심볼릭 링크 사용

심볼릭 링크는 MyISAM 테이블에서만 완벽하게 지원되고 있습니다. 다른 스토리지 엔진의 테이블에서 사용되는 파일의 경우 심볼릭 링크를 사용하려고하면 알 수없는 문제가 발생할 수 있습니다. InnoDB 테이블의 경우에는 대신 섹션 14.5.4 "테이블 공간의 위치 지정" 에 설명하는 대체 기술을 사용합니다.

완벽하게 작동하는 realpath() 호출이없는 시스템에서는 테이블의 심볼릭 링크를 작성하지 마십시오. (Linux 및 Solaris에서는 realpath() 를 지원하고 있습니다). 시스템에서 심볼릭 링크를 지원하는지 여부를 확인하려면 다음 문을 사용하여 have_symlink 시스템 변수의 값을 확인합니다.

 SHOW VARIABLES LIKE 'have_symlink';

MyISAM 테이블의 기호 연결의 처리는 다음과 같이 작동합니다.

  • 데이터 디렉토리에는 항상 테이블 형식 ( .frm ) 파일 데이터 ( .MYD ) 파일 및 인덱스 ( .MYI ) 파일이 있습니다. 데이터 파일과 인덱스 파일은 다른 위치로 이동하고 데이터 디렉토리에서 심볼릭 링크로 대체 할 수 있습니다. 서식 파일은 없습니다.

  • 데이터 파일과 인덱스 파일은 독립적으로 별도의 디렉토리에 대한 심볼릭 링크를 만들 수 있습니다.

  • 실행중인 MySQL 서버에 심볼릭 링크 생성을 실행하도록 지시하려면, CREATE TABLE 에 DATA DIRECTORY 및 INDEX DIRECTORY 옵션을 사용합니다. 섹션 13.1.17 "CREATE TABLE 구문" 을 참조하십시오. 또는 mysqld가 실행되고 있지 않은 경우 명령 줄에서 ln -s를 사용하여 심볼릭 링크 만들기를 수동으로 실행할 수 있습니다.

    참고

    DATA DIRECTORY 및 INDEX DIRECTORY 옵션 중 하나 또는 모두에 사용되는 경로는 MySQL data 디렉토리를 포함 할 수 없습니다. (Bug # 32167)

  • myisamchk가 심볼릭 링크를 데이터 파일과 인덱스 파일을 대체하지 않습니다. 그것은 심볼릭 링크가 가리키는 파일에 직접 작용합니다. 임시 파일은 모든 데이터 파일과 인덱스 파일이 위치하고있는 디렉토리에 생성됩니다. 같은 수 ALTER TABLE , OPTIMIZE TABLE 및 REPAIR TABLE 문에 적용됩니다.

  • 참고

    심볼릭 링크를 사용하여 테이블을 삭제하면 심볼릭 링크와 심볼릭 링크가 가리키는 파일이 모두 삭제됩니다. 이것은 시스템 root 로 mysqld를 실행하거나 시스템 사용자에 MySQL 데이터베이스 디렉토리에 쓰기 권한을 허용하거나하지 않는 매우 정당한 이유입니다.

  • ALTER TABLE ... RENAME 또는 RENAME TABLE 을 사용하여 테이블의 이름을 변경하고 테이블을 다른 데이터베이스로 이동하지 않는 경우, 데이터베이스 디렉토리의 심볼릭 링크 이름을 새 이름으로 변경되어 데이터 파일과 인덱스 파일도 그에 따라 이름이 변경됩니다.

  • ALTER TABLE ... RENAME 또는 RENAME TABLE 을 사용하여 테이블을 다른 데이터베이스로 이동하면 테이블이 다른 데이터베이스 디렉토리로 이동됩니다. 테이블 이름이 변경된 경우 새 데이터베이스 디렉토리의 심볼릭 링크 이름을 새 이름으로 변경되어 데이터 파일과 인덱스 파일도 그에 따라 이름이 변경됩니다.

  • 심볼릭 링크를 사용하지 않는 경우, --skip-symbolic-links 옵션을 mysqld를 시작하고 아무도 mysqld를 사용하여 데이터 디렉토리 밖에있는 파일을 삭제하거나 이름을 변경할 수 없도록 합니다.

이 테이블 심볼릭 링크 작업이 지원되지 않습니다.

  • ALTER TABLE 은 DATA DIRECTORY 및 INDEX DIRECTORY 테이블 옵션을 무시합니다.

  • 앞에서 언급 한 바와 같이, 데이터 파일과 인덱스 파일에만 심볼릭 링크 할 수 있습니다. .frm 파일은 심볼릭 링크 할 수 없습니다. 이를 실행하려고하면 (예를 들어, 하나의 테이블 이름을 다른 테이블의 동의어 등) 잘못된 결과가 생성됩니다. MySQL 데이터 디렉토리에 데이터베이스 db1 이 데이터베이스에 테이블 tbl1 이 있고 db1 디렉토리에 tbl1 을 가리키는 기호 링크 tbl2 를 만들려고합니다.

     shell> cd /path/to/datadir /db1
     shell> ln -s tbl1.frm tbl2.frm
     shell> ln -s tbl1.MYD tbl2.MYD
     shell> ln -s tbl1.MYI tbl2.MYI
    

    스레드가 db1.tbl1 을 읽고 다른 스레드에서 db1.tbl2 를 업데이트하면 문제가 발생합니다.

    • 쿼리 캐시가 "속았다합니다"( tbl1 이 업데이트되지 않았 음을 알 방법이 없기 때문에 오래되어 결과를 반환합니다).

    • tbl2 에 대한 ALTER 문이 실패합니다.

8.11.3.1.3 Windows에서 데이터베이스에 대한 심볼릭 링크 사용

Windows에서는 데이터베이스 디렉토리에 심볼릭 링크를 사용할 수 있습니다. 이는 데이터베이스 디렉토리에 대한 심볼릭 링크를 설정하여 그것을 다른 장소 (다른 디스크 등)에 넣을 수 있습니다. Windows에서 데이터베이스 심볼릭 링크의 사용은 Unix에서 그 사용과 비슷하지만, 링크 설정 절차는 다릅니다.

mydb 라는 데이터베이스의 데이터베이스 디렉토리를 D:\data\mydb 에 배치하고자합니다. 이렇게하려면 MySQL 데이터 디렉토리에 D:\data\mydb 를 가리키는 기호 링크를 작성합니다. 그러나 심볼릭 링크를 생성하기 전에 필요한 경우 D:\data\mydb 디렉토리를 만들고 그것이 존재하는지 확인합니다. 데이터 디렉토리에 mydb 라는 데이터베이스 디렉토리가 이미있는 경우는 그것을 D:\data 로 이동합니다. 그렇지 않으면 심볼릭 링크는 비활성화됩니다. 문제를 피하기 위해 데이터베이스 디렉토리를 이동할 때 서버가 실행되고 있지 않은지 확인하십시오.

데이터베이스 심볼릭 링크를 생성하는 절차는 Windows 버전에 따라 다릅니다.

Windows Vista, Windows Server 2008 이후에는 네이티브 심볼릭 링크 지원이 있기 때문에 mklink 명령을 사용하여 심볼릭 링크를 만들 수 있습니다. 이 명령에는 관리자 권한이 필요합니다.

  1. 위치를 데이터 디렉토리로 변경합니다.

     C : \> cd \path\to\datadir
    
  2. 데이터 디렉토리에서 데이터베이스 디렉토리의 위치를 가리키는 mydb 라는 심볼릭 링크를 만듭니다.

     C : \> mklink /d mydb D:\data\mydb
    

이후 데이터베이스 mydb 에 작성되는 모든 테이블이 D:\data\mydb 에 작성됩니다.

또는 MySQL에서 지원되는 모든 버전의 Windows에서 데이터 디렉토리에 대상 디렉터리 경로를 저장하는 .sym 파일을 작성하여 MySQL 데이터베이스에 대한 심볼릭 링크를 만들 수 있습니다. 파일은 db_name .sym 라는합니다. 여기서 db_name 은 데이터베이스 이름입니다.

Windows에서 .sym 파일을 사용하여 데이터베이스 심볼릭 링크 지원은 기본적으로 활성화되어 있습니다. .sym 파일 심볼릭 링크가 필요하지 않은 경우, --skip-symbolic-links 옵션으로 mysqld를 시작하고 그 지원을 비활성화 할 수 있습니다. 시스템에서 .sym 파일 심볼릭 링크를 지원하는지 여부를 확인하려면 다음 문을 사용하여 have_symlink 시스템 변수의 값을 확인합니다.

 SHOW VARIABLES LIKE 'have_symlink';

.sym 파일 심볼릭 링크를 만들려면 다음 단계를 사용합니다.

  1. 위치를 데이터 디렉토리로 변경합니다.

     C : \> cd \path\to\datadir
    
  2. 데이터 디렉토리에 경로 D:\data\mydb\ 를 포함 mydb.sym 라는 텍스트 파일을 만듭니다.

    참고

    새로운 데이터베이스와 테이블의 경로는 절대 경로로합니다. 상대 경로를 지정하는 경우, 위치는 mydb.sym 파일에 상대적입니다.

이후 데이터베이스 mydb 에 작성되는 모든 테이블이 D:\data\mydb 에 작성됩니다.

참고

.sym 파일 지원은 mklink를 사용하여 사용 가능한 기본 심볼릭 링크 지원과 중복 때문에 .sym 파일의 사용은 MySQL 5.6.9 현재 비추천되어 그 지원은 미래의 MySQL 릴리스에서 제거됩니다.

Windows에서 데이터베이스 심볼릭 링크에 .sym 파일의 사용에는 다음과 같은 제한이 적용됩니다. 이러한 제한은 mklink를 사용하여 작성할 심볼릭 링크에 적용되지 않습니다.

  • MySQL 데이터 디렉토리에 데이터베이스와 동일한 이름의 디렉토리가 존재하는 경우, 심볼릭 링크는 사용되지 않습니다.

  • --innodb_file_per_table 옵션을 사용할 수 없습니다.

  • mysqld를 서비스로 실행하는 경우 원격 서버에 매핑 된 드라이브를 심볼릭 링크의 대상으로 사용할 수 없습니다. 해결 방법으로 전체 경로 ( \\servername\path\ )를 사용할 수 있습니다.


서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved