Skip to content

조회 수 6752 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

MYSQL의 테이블 점검(복구)유틸리티인 myisamchk를 이용하여 특정 테이블의 이상유무를 점검할 수 있습니다. 테이블의 이상유무를 가장 간단히 점검하려면 myisamchk사용시 아무런 옵션없이 그냥 테이블파일만 지정해 주시면 됩니다.

 

여기서 예로들고 있는 실제 데이터들의 위치는/usr/local/mysql/data/papa/으로 가정하겠습니다. 실제 필자가 테스트로 사용하고 있는 데이터베이스명이 papa이며, papa라는 데이터베이스의 테이블파일이 존재하고있는 위치가 /usr/local/mysql/data/papa/이기 때문입니다.

 

그리고 앞서 말씀드린바와 같이 MYSQL의 복구 유틸리티인 myisamchk의 위치는 /usr/local/mysql/bin/myisamchk임을 꼭 기억하시고 다음 설명을 보시기 바랍니다.

 

아래는 myisamchk의 점검대상인 papa데이터베이스의 테이블파일들을 ls명령어로 확인한 것입니다.

 

[root@file bin]# pwd

/usr/local/mysql/bin

[root@file bin]#

[root@file bin]# ls -l ../data/papa/

합계 56

-rw-rw----    1 mysql    mysql        2652  2 12 23:20 Demo_Domain.MYD

-rw-rw----    1 mysql    mysql        2048  2 12 23:23 Demo_Domain.MYI

-rw-rw----    1 mysql    mysql        8940  1 6 11:27 Demo_Domain.frm

-rw-rw----    1 mysql    mysql          28  1 6 11:27 Demo_DomainAdmin.MYD

-rw-rw----    1 mysql    mysql        2048  1 7 00:51 Demo_DomainAdmin.MYI

-rw-rw----    1 mysql    mysql        8598  1 6 11:27 Demo_DomainAdmin.frm

-rw-rw----    1 mysql    mysql           0  1 6 11:27 Demo_DomainDrop.MYD

-rw-rw----    1 mysql    mysql        1024  1 6 11:27 Demo_DomainDrop.MYI

-rw-rw----    1 mysql    mysql        8626  1 6 11:27 Demo_DomainDrop.frm

[root@file bin]#

 

다음은 myisamchk를 이용하여 /usr/local/mysql/data/papa/에 위치해 있는 테이블 인덱스파일(*.MYI)의 이상유무를 간단히 점검한 예입니다. , Demo_Domain.MYI파일의 이상유무를 가장 간단한 방법으로 점검한 예입니다.

 

[root@file bin]# pwd

/usr/local/mysql/bin

[root@file bin]#

[root@file bin]# ./myisamchk ../data/papa/Demo_Domain.MYI

Checking MyISAM file: ../data/papa/Demo_Domain.MYI

Data records:      31   Deleted blocks:       0

- check file-size

- check key delete-chain

- check record delete-chain

- check index reference

- check data record references index: 1

- check record links

[root@file bin]#

 

 

테이블파일의 이상유무를 점검할 때에는 -c라는 옵션을 사용하셔도 동일한 점검을 하실 수 있습니다. 다음은 -c옵션을 사용하여 Demo_Domain.MYI파일의 이상유무를 점검한 예입니다.

 

[root@file bin]# ./myisamchk -c ../data/papa/Demo_Domain.MYI

Checking MyISAM file: ../data/papa/Demo_Domain.MYI

Data records:      31   Deleted blocks:       0

- check file-size

- check key delete-chain

- check record delete-chain

- check index reference

- check data record references index: 1

- check record links

[root@file bin]#

 

참고로 -c옵션 대신에 --check옵션을 사용하셔도 됩니다.

 

 

 

3 : MYSQL 테이블 점검시 이상발견시만 알려주기

 

MYSQL의 테이블복구 유틸리티인 myisamchk로 테이블파일을 점검(복구)하다보면 가끔씩 불필요한 메시지로 짜증날 때가 있습니다. 이때 -s옵션을 사용하시면 에러발생시에만 (only print errors) 에러내용을 출력하므로 불필요한 메시지는 출력되지 않습니다.

 

다음 예는 Demo_Domain.MYI파일의 점검을 하면서 에러발견시에만 메시지를 출력하고 그외에는 아무런 메시지도 출력하지 않도록하기 위하여 -s옵션(silent)을 사용한 것입니다.

 

 

[root@file bin]# pwd

/usr/local/mysql/bin

[root@file bin]#

[root@file bin]# ./myisamchk -s ../data/papa/Demo_Domain.MYI

[root@file bin]#

 

참고로 -s옵션 대신에 --silent옵션을 사용하셔도 됩니다.

 

 

 

4 : MYSQL테이블 점검(복구)시 가능한 상세하게 메시지 출력하기

 

MYSQL의 복구 유틸리티인 myisamchk를 이용하여 테이블파일의 점검(복구)를 할 때에 -s옵션과는 반대로 -v옵션(verbose)을 사용하시면 가능한 상세한 메시지를 출력해 줍니다.

 

아래의 예는 Demo_Domain.MYI라는 테이블 인덱스파일을 myisamchk로 점검할 때에 가능한 자세한 메시지를 출력하기 위하여 -v옵션을 사용한 것입니다.

 

[root@file bin]# pwd

/usr/local/mysql/bin

[root@file bin]#

[root@file bin]# ./myisamchk -v ../data/papa/Demo_Domain.MYI

Checking MyISAM file: ../data/papa/Demo_Domain.MYI

Data records:      31   Deleted blocks:       0

- check file-size

- check key delete-chain

block_size 1024:

- check record delete-chain

No recordlinks

- check index reference

- check data record references index: 1

- check record links

[root@file bin]#

 

참고로 -v옵션 대신에 --verbose를 사용하셔도 됩니다.

 

 

 

5 : MYSQL테이블 이상유무 점검시 결과를 상세히 종합하여 보여주기

 

MYSQL의 테이블 복구유틸리티인 myisamchk로 특정 테이블파일을 점검한 결과를 가장 상세하게 종합하여 보여주는 옵션이 -i입니다. , -i옵션을 사용하여 특정 테이블의 이상유무를 점검하면 테이블의 에러사항을 종합적으로 점검하여 그 결과를 상세히 보여줍니다.

 

아래의 예는 myisamchk를 이용하여 Demo_Domain.MYI파일의 이상유무를 점검한 결과입니다.

 

[root@file bin]# pwd

/usr/local/mysql/bin

[root@file bin]#

[root@file bin]# ./myisamchk -i ../data/papa/Demo_Domain.MYI

Checking MyISAM file: ../data/papa/Demo_Domain.MYI

Data records:      31   Deleted blocks:       0

- check file-size

- check key delete-chain

- check record delete-chain

- check index reference

- check data record references index: 1

Key:  1:  Keyblocks used:  18%  Packed:    0%  Max levels:  1

Total:    Keyblocks used:  18%  Packed:    0%

 

- check record links

Records:                31    M.recordlength:       81   Packed:             0%

Recordspace used:       99%   Empty space:           0%  Blocks/Record:   1.00

Record blocks:          31    Delete blocks:         0

Record data:          2521    Deleted data:          0

Lost space:             20    Linkdata:            111

 

User time 0.01, System time 0.00

Maximum resident set size 0, Integral resident set size 0

Non-physical pagefaults 27, Physical pagefaults 185, Swaps 0

Blocks in 0 out 0, Messages in 0 out 0, Signals 0

Voluntary context switches 0, Involuntary context switches 0

[root@file bin]#


위의 결과를 보시는 바와 같이 지금까지의 점검결과 중 그 결과를 가장 상세하게 종합하여 출력하고 있다는 것을 아실 수 있습니다.

 

참고로 -i옵션은 --information을 사용하셔도 됩니다.

 

 

 

6 : MYSQL 특정테이블 이상유무를 가장 정밀하게 점검하기

 

MYSQL의 테이블 복구유틸리티인 myisamchk로 특정 테이블파일을 점검할 때에 가장 완전하고 정밀한 결과를 원하신다면 -e옵션을 사용하시기 바랍니다. 특정 테이블의 이상유무를 점검하기 위하여 사용하는 모든 옵션들 가운데 가장 정밀하고 깊이있는 점검을 해주는 옵션입니다.

 

주의하실 점은 -r이나 -o옵션을 사용하여 테이블을 복구할 때에 -e옵션을 사용하실 때에는 세심한 주의를 요하는 옵션입니다. (-r이나 -o옵션과 함께 사용되는 복구시의 -e옵션 설명을 참조 하십시요.)  하지만 단순히 점검을 위해 -e만을 사용할 때에는 가장 정확한 결과를 보여주므로 안심하시고 사용하셔도 됩니다.

 

참고로 -e옵션을 사용하실 때에는 가능한 아래의 예와 같이 -v옵션과 함께 사용하시기 바랍니다. 아래의 예는 myisamchk를 이용하여 Demo_Domain.MYI파일의 이상유무를 -e -v를 함께 사용한 결과를 나타낸 것입니다.

 

[root@file bin]# pwd

/usr/local/mysql/bin

[root@file bin]#

[root@file bin]# ./myisamchk -ev ../data/papa/Demo_Domain.MYI

Checking MyISAM file: ../data/papa/Demo_Domain.MYI

Data records:      31   Deleted blocks:       0

- check file-size

- check key delete-chain

block_size 1024:

- check record delete-chain

No recordlinks

- check index reference

- check data record references index: 1

- check records and index references

[root@file bin]#

 

참고로 -e 옵션은 --extend-check를 대신 사용할 수도 있습니다.

 

 


7 :
정형적인 방법으로 MYSQL의 깨진 테이블파일 복구하기

 

MYSQL의 복구 유틸리티인 myisamchk를 이용하여 깨지거나 오류난 테이블파일의 복구를 할 수 있습니다. 지금까지의 myisamchk의 예는 오류점검을 하는 예들이였다면 지금 부터는 실제로 복구를 하는 예입니다. , myisamchk로 오류난 테이블파일의 복구를 할 때에는 -r옵션을 사용하시면 됩니다.

 

, 한가지 알아두실 것은 유일(unique)하지않은 unique키값을 가진 데이터는 -r옵션으로 복구하는 대상에서 제외된다는 점입니다. 이는 데이터의 안전성을 위한 것이므로 알아두시기 바랍니다.

 

다음은 -r옵션을 사용하여 Demo_Domain.MYI 테이블파일을 복구하기 위하여 -r옵션을 사용한 예입니다. 참고로 필자의 경우에는 -r옵션을 사용할 때에는 복구내역의 자세한 메시지를 보기 위하여 -v옵션과 함께 사용합니다. , -rv을 복구옵션으로 주로 사용합니다.

 

[root@file bin]# pwd

/usr/local/mysql/bin

[root@file bin]#

[root@file bin]# ./myisamchk -rv ../data/papa/Demo_Domain.MYI

- recovering (with sort) MyISAM-table '../data/papa/Demo_Domain.MYI'

Data records: 31

- Fixing index 1

  - Searching for keys, allocating buffer for 134 keys

  - Dumping 31 keys

[root@file bin]#

 

 

참고로 -r옵션을 대신하여 --recover옵션을 사용할 수도 있습니다.

 

깨지거나 에러난 테이블파일을 복구하는 방법에는 이번에 설명드린 -r옵션 외에도 -o옵션이 있습니다.  -o를 사용하여 복구하는 예는 바로 다음에 설명하였으므로 이 둘의 차이점을 비교해 보시기 바랍니다.


List of Articles
번호 제목 글쓴이 날짜 조회 수
86 MySQL 데이터베이스의 생성과 삭제 ADMINPLAY 2008.10.30 7667
85 mysql 설치 시 LinuxThreads 에러 ADMINPLAY 2008.10.30 6629
84 mysql 테이블이 손상된 경우 myisamchk ADMINPLAY 2008.10.30 7669
83 초기 mysql root 패스워드 설정 및 비번 변경과 root 비번 잃어 버렸을 경우 변경하는 방법 ADMINPLAY 2008.10.30 11290
82 mysql 자주쓰는 명령어 정리 ADMINPLAY 2008.10.30 7168
81 mysql data디렉토리 변경 ADMINPLAY 2008.10.30 9267
80 Mysql 버전별 케릭터셋 지원여부 (euckr / utf-8) ADMINPLAY 2008.11.04 7834
79 mysql root에 아무권한이 없어 작업이 불가능한 경우 ADMINPLAY 2008.11.11 7186
78 Mysql max_connection 늘리기 ADMINPLAY 2008.11.11 8259
77 MySQL 테이블 복구하기 (쉴 프롬프트에서..) ADMINPLAY 2008.11.11 7456
» mysql 자세한 복구 방법 #1 ADMINPLAY 2008.11.11 6752
75 mysql 자세한 복구 방법 #2 ADMINPLAY 2008.11.11 7385
74 InnoDB 와 MyISAM ADMINPLAY 2008.12.14 8593
73 Mysql 버전확인 ADMINPLAY 2008.12.23 9878
72 mysql 외부접속 ADMINPLAY 2009.02.07 8764
71 mysql5.0 계정 생성시 ssl_cipher 에러 ADMINPLAY 2009.03.03 9563
70 SSL을 이용한 MySQL 연결 ADMINPLAY 2009.03.03 10807
69 MySQL max connection 값 변경 1 ADMINPLAY 2009.03.09 9713
68 mysqli 컴파일중 re2c 에러발생! ADMINPLAY 2009.03.17 9408
67 slow Query 조사 ADMINPLAY 2009.03.17 9054
Board Pagination Prev 1 2 3 4 5 Next
/ 5

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234