• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 서비스
    • MySQL유지보수
    • MySQL라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.1 한글메뉴얼) [close]
  • 1. MySQL 5.1 Reference Manual
  • 2. Installing and MySQL 업그레이드하기
  • 3. 사용 설명서 (Tutorial)
  • 4. MySQL 프로그램 사용하기
  • 5. 데이터베이스 관리
  • 6. 리플리케이션
  • 7. 최적화 (Optimization)
  • 8. 클라이언트 및 유틸리티 프로그램
  • 1. 클라이언트 및 유틸리티 프로그램 개요
    2. innochecksum — 오프라인 InnoDB 체크섬 유틸리티
    3. my_print_defaults — 옵션 파일에 있는 옵션 출력하기
    4. myisam_ftdump — 풀-텍스트 (Full-Text) 인덱스 정보 출력하기
    5. myisamchk — MyISAM 테이블-관리 유틸리티
    6. myisamlog — MyISAM 로그 파일 컨텐츠 출력하기
    7. myisampack — 압축된 읽기 전용 MyISAM 테이블 만들기
    8. mysql — MySQL 명령어-라인 툴
    9. mysqlaccess — 접속 권한 검사를 위한 클라이언트
    10. mysqladmin — MySQL 서버를 관리하기 위한 클라이언트
    11. mysqlbinlog — 바이너리 로그 파일을 처리하기 위한 유틸리티
    12. mysqlcheck — 테이블 관리 및 복구 프로그램
  • 9. 언어 구조 (Language Structure)
  • 10. 문자 셋 지원
  • 24. API 및 라이브러리
  • 25. Connectors

8.12. mysqlcheck — 테이블 관리 및 복구 프로그램

mysqlcheck 클라이언트는 테이블을 체크, 복구, 최적화, 그리고 분석을 한다.

mysqlcheck는 myisamchk과 유사한 기능을 구현하지만, 전혀 다른 방식으로 동작을 한다. 가장 주된 차이점은, mysqlcheck는 mysqld 서버가 구동될 때만 사용될 수 있는데 비해서, myisamchk는 이 서버가 없는 경우에도 사용될 수 있다는 점이다. mysqlcheck를 사용할 때 얻을 수 있는 장점으로는 사용자가 테이블을 체크하기 위해서 서버를 종료할 필요가 없다는 것이다.

mysqlcheck은 SQL 명령문인 CHECK TABLE, REPAIR TABLE, ANALYZE TABLE, 그리고 OPTIMIZE TABLE을 사용자 입장에서 편리하게 사용한다. 이것은 사용자가 원하는 연산을 위해서 어떤 명령문을 사용할 것인지를 판단하고, 서버에게 이 명령문을 전달해서 실행을 하도록 만든다. 각각의 명령문이 함께 실행하는 스토리지 엔진에 대해서는 Chapter 13, SQL 명령문 신텍스를 참조하면 된다.

MyISAM 스토리지 엔진은 위의 4 가지 명령문을 모두 지원하며, 따라서 mysqlcheck는 MyISAM 테이블에서 위의 4 가지 연산을 모두 실행할 수가 있다. 다른 스토리지 엔진은 이것들을 모두 지원하지는 않는다. 이와 같은 명령문 처리를 위해 다른 엔진을 사용하는 경우에는, 에러 메시지가 나타나게 된다. 예를 들면, 만일 test.t 이 하나의 MEMORY 테이블이라면, 이것을 체크하고자 하는 시도는 아래와 같은 결과를 만들게 된다:

 

shell> mysqlcheck test t

test.t

note     : The storage engine for the table doesn't support check

 

주의

 

테이블 수정을 실행하기 전에 테이블을 백업하는 것이 가장 좋은 방법이다; 몇몇 환경 하에서 데이터 소실이 발생하기로 한다. 그러나 가능한 원인은 파일시스템 에러 정도로 한정되어 있다.

mysqlcheck를 호출하는 방법에는 일반적으로 3 가지가 있다:

 

shell> mysqlcheck [option] db_name [tables]

shell> mysqlcheck [option] --databases db_name1 [db_name2 db_name3...]

shell> mysqlcheck [option] --all-databases

db_name 다음에 어떠한 테이블 이름도 지정하지 않거나 또는 --databases 또는 --all-databases 옵션을 사용하는 경우에는, 전체 데이터베이스가 체크된다.

mysqlcheck는 다른 클라이언트 프로그램과 비교해서 특별한 특성이 하나 있다. 테이블 체크에 대한 디폴트 동작 (--check)은 바이너리의 이름을 재 지정함으로써 변경 시킬 수 있다. 디폴트로 테이블을 복구하는 툴을 가지고자 한다면, 간단히 mysqlcheck를 mysqlrepair이름으로 복사를 하거나, 또는 mysqlcheck를 mysqlrepair라는 이름으로 심볼릭 링크를 만들기만 하면 된다. mysqlrepair를 호출한다면, 이것은 테이블을 복구하게 된다.

 

다음은 mysqlcheck의 디폴트 동작을 변경 시킬 때 사용할 수 있는 것들이다:

 

mysqlrepair

The default option is --repair

mysqlanalyze

The default option is --analyze

mysqloptimize

The default option is --optimize

 

mysqlcheck 는 다음 옵션을 지원한다:

  • --help, -?

도움말을 출력하고 종료.

  • --all-databases, -A

모든 데이터 베이스에 있는 모든 테이블을 체크한다. 이것은 --databases 옵션을 사용하고 명령어 라인에서 모든 데이터 베이스 이름을 지정하는 것과 동일한 기능을 한다.

  • --all-in-1, -1

각 테이블에 대해서 명령문을 하나씩 입력하는 대신에, 실행 시키고자 하는 데이터 베이스에 있는 모든 테이블 이름을 가지고 있는 각 데이터 베이스에 대해서 하나의 명령문을 실행 시킨다.

  • --analyze, -a

테이블을 분석한다.

  • --auto-repair

체크를 한 테이블이 깨졌다면, 자동으로 이것을 복구 시킨다. 모든 테이블을 체크한 후에 필요한 모든 복구를 실행한다.

  • --character-sets-dir=path

문자 셋이 설치되어 있는 디렉토리 Section 5.10.1, “데이터 및 정렬을 위해 사용되는 문자 셋”을 참조할 것.  

  • --check, -c

테이블 에러를 체크한다. 이것은 디폴트 연산이다.

  • --check-only-changed, -C

마지막 체크를 한 후에 변경된 테이블 또는 올바르게 닫히지 않은 테이블만 체크한다.

  • --check-upgrade, -g

서버의 현재 버전과 호환성이 없는 테이블을 체크하기 위해서 CHECK TABLE를 FOR UPGRADE 옵션과 함께 호출한다. 이 옵션은 자동적으로 --fix-db-names과 --fix-table-names 옵션을 가능하게 한다. --check-upgrade는 MySQL 5.1.7에서 추가되었다.

  • --compress

클라이언트 및 서버가 모두 압축을 지원한다면, 이 두 서버간의 전달되는 모든 정보를 압축시킨다.

  • --databases, -B

네임드 데이터 베이스에 있는 모든 테이블을 처리한다. 일반적인 경우, mysqlcheck는 명령어라인에 있는 첫 번째 이름을 데이터베이스 이름을 간주하고 그 다음의 이름을 테이블 이름으로 간주한다. 이 옵션을 사용하면, 모든 이름 인수를 데이터베이스 이름으로 간주하게 된다.

  • --debug[=debug_option], -# [debug_option]

디버깅 로그를 작성한다. 전형적인 debug_options 스트링은 'd:t:o,file_name'.

  • --default-character-set=charset_name

charset_name를 디폴트 문자 셋으로 사용한다. Section 5.10.1, “데이터 및 정렬을 위해 사용되는 문자 셋”을 참조.  

  • --extended, -e

이 옵션을 사용해서 테이블을 체크한다면, 시간은 오래 걸리지만 100%의 일관성을 보장받을 수 있다.

 

이 옵션을 테이블 복구용으로 사용한다면, 복구하는데 시간이 오래 걸릴 뿐만 아니라 필요 없는 열도 많이 생성되게 된다!

  • --fast, -F

올바르게 종료되지 않은 테이블만 체크한다.

  • --fix-db-names

5.1 포맷으로 데이터베이스 이름 변경. 특수 문자를 포함하는 데이터베이스 이름에만 영향을 미친다. 이 옵션은 MySQL 5.1.7에 추가되었다.

  • --fix-table-names

5.1 포맷으로 테이블 이름 변경. 특수 문자를 포함하는 테이블 이름에만 영향을 미친다. 이 옵션은 MySQL 5.1.7에 추가되었다.

  • --force, -f

SQL 에러가 발생하더라도 계속 진행한다.

  • --host=host_name, -h host_name

주어진 호스트에 있는 MySQL 서버에 접속을 한다.

  • --medium-check, -m

--extended 연산 보다는 빠른 체크를 실행한다. 이것은 모든 에러에 대해서 99.99%의 신뢰도를 보장하는데, 대부분의 경우 이 정도면 충분하다.

  • --optimize, -o

테이블을 최적화 시킨다.

  • --password[=password], -p[password]

서버에 접속을 할 때 사용할 패스워드. 축약형 옵션(-p)을 사용할 경우에는, 이 옵션과 패스워드 사이에는 스페이스를 두지 말도록 한다. --password 또는 -p 옵션 다음에 패스워드를 지정하지 않으면, 프롬프트가 나오게 된다.

 

명령어 라인에 패스워드를 지정하는 것은 안전하지 않은 것으로 간주될 수 있다. Section 5.8.6, “패스워드 보안 유지”장 참조할 것.  

  • --port=port_num, -P port_num

접속용으로 사용하는 TCP/IP 포트 번호.

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

사용할 접속 프로토콜.

  • --quick, -q

이 옵션을 사용해서 테이블을 체크한다면, 잘못된 링크를 체크하기 위한 열 스캐닝을 체크하지 못하도록 한다. 이 방법이 가장 빠른 체크 방법이다.

 

이 옵션을 사용해서 테이블을 복구한다면, 이것은 인덱스 트리만을 복구하려고 할 것이다. 가장 빠른 복구 방법이다.

  • --repair, -r

유니크(unique)하지 않은 유니크 키를 제외하고 거의 모든 것을 복구시킨다.

  • --silent, -s

침묵 모드(Silent mode). 에러 메시지만을 출력한다.

  • --socket=path, -S path

localhost 에 접속하는 경우, 사용할 유닉스 소켓 파일, 또는 윈도우 네임드 파이프 이름.

  • --ssl*

SSL 키와 인증을 찾을 위치를 표시하고 SSL을 통해 서버에 접속할지 여부를 --ssl 로 시작하는 옵션이 지정한다. Section 5.8.7.3, “SSL 명령어 옵션”장 참조.

  • --tables

--databases 또는 -B 옵션을 무력화 시킨다(override). 이 옵션 다음에 나오는 모든 이름 인수는 테이블 이름으로 간주된다.

  • --use-frm

MyISAM 테이블에서의 복구 연산의 경우, 테이블의 .MYI 헤더가 깨졌다고 하더라도 테이블 복구를 실행하기 위해서 .frm 파일로부터 테이블 구조를 가져온다.

  • --user=user_name, -u user_name

서버에 접속을 할 때 사용하는 MySQL 사용자 이름.

  • --verbose, -v

버보스 모드(Verbose mode). 프로그램 연산의 다양한 단계 정보를 출력한다.

  • --version, -V

버전 정보를 출력하고 종료.

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