Loading...
MySQL 9.5 Reference Manual 9.5의 6.6.2 innochecksum — Offline InnoDB File Checksum Utility의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
innochecksum은 InnoDB 파일에 대한 체크섬을 출력합니다. 이 도구는 InnoDB 테이블스페이스 파일을 읽고 각 페이지에 대해 체크섬을 계산한 후, 계산된 체크섬을 저장된 체크섬과 비교하고, 손상된 페이지를 나타내는 불일치를 보고합니다. 이 도구는 원래 전원 장애 후 테이블스페이스 파일의 무결성을 빠르게 검증하기 위해 개발되었지만, 파일 복사 후에도 사용할 수 있습니다. 체크섬 불일치는 실행 중인 서버의 InnoDB가 의도적으로 셧다운되도록 하기 때문에, 운영 중인 서버가 손상된 페이지에 도달할 때까지 기다리는 것보다 이 도구를 사용하는 것이 더 나을 수 있습니다.
innochecksum은 서버가 이미 연 테이블스페이스 파일에는 사용할 수 없습니다. 이러한 파일에 대해서는 CHECK TABLE을 사용하여 테이블스페이스 내의 테이블을 검사해야 합니다. 서버가 이미 연 테이블스페이스에 대해 innochecksum을 실행하려 하면 Unable to lock file 오류가 발생합니다.
체크섬 불일치가 발견되면, 백업에서 테이블스페이스를 복원하거나 서버를 시작한 다음 mysqldump를 사용하여 테이블스페이스 내의 테이블 백업을 시도하십시오.
innochecksum은 다음과 같이 호출합니다:
1innochecksum [options] file_name
innochecksum은 다음과 같은 옵션을 지원합니다. 페이지 번호를 참조하는 옵션의 경우, 번호는 0부터 시작합니다.
--help,-?| Property | Value |
|---|---|
| Command-Line Format | --help |
| Type | Boolean |
| Default Value | false |
명령줄 도움말을 표시합니다. 사용 예:
1innochecksum --help
--info,-I| Property | Value |
|---|---|
| Command-Line Format | --info |
| Type | Boolean |
| Default Value | false |
--help의 동의어입니다. 명령줄 도움말을 표시합니다. 사용 예:
1innochecksum --info
--version,-V| Property | Value |
|---|---|
| Command-Line Format | --version |
| Type | Boolean |
| Default Value | false |
버전 정보를 표시합니다. 사용 예:
1innochecksum --version
--verbose,-v| Property | Value |
|---|---|
| Command-Line Format | --verbose |
| Type | Boolean |
| Default Value | false |
상세 모드; 5초마다 로그 파일에 진행 상황 표시를 출력합니다. 진행 상황 표시가 출력되려면 --log 옵션을 사용하여 로그 파일을 지정해야 합니다. verbose 모드를 켜려면 다음과 같이 실행합니다:
1innochecksum --verbose
상세 모드를 끄려면 다음과 같이 실행합니다:
1innochecksum --verbose=FALSE
--verbose 옵션과 --log 옵션은 동시에 지정할 수 있습니다. 예를 들어:
1innochecksum --verbose --log=/var/lib/mysql/test/logtest.txt
로그 파일에서 진행 상황 표시 정보를 찾기 위해 다음과 같은 검색을 수행할 수 있습니다:
1cat ./logtest.txt | grep -i "okay"
로그 파일의 진행 상황 표시 정보는 다음과 유사하게 나타납니다:
1page 1663 okay: 2.863% done 2page 8447 okay: 14.537% done 3page 13695 okay: 23.568% done 4page 18815 okay: 32.379% done 5page 23039 okay: 39.648% done 6page 28351 okay: 48.789% done 7page 33023 okay: 56.828% done 8page 37951 okay: 65.308% done 9page 44095 okay: 75.881% done 10page 49407 okay: 85.022% done 11page 54463 okay: 93.722% done 12...
--count,-c| Property | Value |
|---|---|
| Command-Line Format | --count |
| Type | Base name |
| Default Value | true |
파일 내 페이지 수를 출력한 후 종료합니다. 사용 예:
1innochecksum --count ../data/test/tab1.ibd
--start-page=num,-s num| Property | Value |
|---|---|
| Command-Line Format | --start-page=# |
| Type | Numeric |
| Default Value | 0 |
이 페이지 번호에서 시작합니다. 사용 예:
1innochecksum --start-page=600 ../data/test/tab1.ibd
또는:
1innochecksum -s 600 ../data/test/tab1.ibd
--end-page=num,-e num| Property | Value |
|---|---|
| Command-Line Format | --end-page=# |
| Type | Numeric |
| Default Value | 0 |
| Minimum Value | 0 |
| Maximum Value | 18446744073709551615 |
이 페이지 번호에서 종료합니다. 사용 예:
1innochecksum --end-page=700 ../data/test/tab1.ibd
또는:
1innochecksum --p 700 ../data/test/tab1.ibd
--page=num,-p num| Property | Value |
|---|---|
| Command-Line Format | --page=# |
| Type | Integer |
| Default Value | 0 |
이 페이지 번호만 검사합니다. 사용 예:
1innochecksum --page=701 ../data/test/tab1.ibd
--strict-check,-C| Property | Value |
|---|---|
| Command-Line Format | --strict-check=algorithm |
| Type | Enumeration |
| Default Value | crc32 |
| Valid Values | innodb<br>crc32<br>none |
엄격한 체크섬 알고리즘을 지정합니다. 옵션에는 innodb, crc32, none이 포함됩니다.
다음 예제에서는 innodb 체크섬 알고리즘을 지정합니다:
1innochecksum --strict-check=innodb ../data/test/tab1.ibd
다음 예제에서는 crc32 체크섬 알고리즘을 지정합니다:
1innochecksum -C crc32 ../data/test/tab1.ibd
다음 조건이 적용됩니다:
--strict-check 옵션을 지정하지 않으면, innochecksum은 innodb, crc32, none에 대해 검증합니다.
none 옵션을 지정하면, none에 의해 생성된 체크섬만 허용됩니다.
innodb 옵션을 지정하면, innodb에 의해 생성된 체크섬만 허용됩니다.
crc32 옵션을 지정하면, crc32에 의해 생성된 체크섬만 허용됩니다.
--no-check,
-n
| Property | Value |
|---|---|
| Command-Line Format | --no-check |
| Type | Boolean |
| Default Value | false |
체크섬을 다시 쓸 때 체크섬 검증을 무시합니다. 이 옵션은 innochecksum --write 옵션과 함께만 사용할 수 있습니다. --write 옵션이 지정되지 않으면, innochecksum은 종료됩니다.
다음 예제에서는 잘못된 체크섬을 대체하기 위해 innodb 체크섬을 다시 씁니다:
1innochecksum --no-check --write innodb ../data/test/tab1.ibd
| Property | Value |
|---|---|
| Command-Line Format | --allow-mismatches=# |
| Type | Integer |
| Default Value | 0 |
| Minimum Value | 0 |
| Maximum Value | 18446744073709551615 |
innochecksum이 종료되기 전에 허용되는 체크섬 불일치의 최대 개수입니다. 기본 설정은 0입니다. --allow-mismatches= N 이고, N>=0인 경우, _N_개의 불일치가 허용되고 innochecksum은 N+1에서 종료됩니다. --allow-mismatches가 0으로 설정되면, innochecksum은 첫 번째 체크섬 불일치에서 종료됩니다.
다음 예제에서는 기존 innodb 체크섬을 다시 써서 --allow-mismatches를 1로 설정합니다.
1innochecksum --allow-mismatches=1 --write innodb ../data/test/tab1.ibd
--allow-mismatches를 1로 설정했을 때, 1000 페이지로 구성된 파일에서 페이지 600과 페이지 700에서 불일치가 있는 경우, 페이지 0-599 및 601-699에 대해 체크섬이 업데이트됩니다. --allow-mismatches가 1로 설정되어 있으므로 체크섬은 첫 번째 불일치를 허용하고 두 번째 불일치에서 종료되며, 페이지 600과 페이지 700-999는 변경되지 않은 상태로 남습니다.
--write=name,-w num| Property | Value |
|---|---|
| Command-Line Format | --write=algorithm |
| Type | Enumeration |
| Default Value | crc32 |
| Valid Values | innodb<br>crc32<br>none |
체크섬을 다시 씁니다. 잘못된 체크섬을 다시 쓸 때는 --no-check 옵션을 --write 옵션과 함께 사용해야 합니다. --no-check 옵션은 innochecksum에게 잘못된 체크섬의 검증을 무시하도록 지시합니다. 현재 체크섬이 유효한 경우에는 --no-check 옵션을 지정할 필요가 없습니다.
--write 옵션을 사용할 때는 알고리즘을 지정해야 합니다. --write 옵션의 가능한 값은 다음과 같습니다:
innodb: InnoDB의 원래 알고리즘을 사용하여 소프트웨어에서 계산한 체크섬.crc32: crc32 알고리즘을 사용하여 계산한 체크섬으로, 하드웨어 가속을 사용할 수 있습니다.none: 상수 값.--write 옵션은 전체 페이지를 디스크에 다시 씁니다. 새 체크섬이 기존 체크섬과 동일한 경우, I/O를 최소화하기 위해 새 체크섬은 디스크에 기록되지 않습니다.
innochecksum은 --write 옵션이 사용될 때 배타적 잠금을 획득합니다.
다음 예제에서는 tab1.ibd에 대해 crc32 체크섬을 기록합니다:
1innochecksum -w crc32 ../data/test/tab1.ibd
다음 예제에서는 잘못된 crc32 체크섬을 대체하기 위해 crc32 체크섬을 다시 씁니다:
1innochecksum --no-check --write crc32 ../data/test/tab1.ibd
| Property | Value |
|---|---|
| Command-Line Format | --page-type-summary |
| Type | Boolean |
| Default Value | false |
테이블스페이스에서 각 페이지 타입의 개수를 표시합니다. 사용 예:
1innochecksum --page-type-summary ../data/test/tab1.ibd
--page-type-summary에 대한 샘플 출력:
1File::../data/test/tab1.ibd 2================PAGE TYPE SUMMARY============== 3#PAGE_COUNT PAGE_TYPE 4=============================================== 5 2 Index page 6 0 Undo log page 7 1 Inode page 8 0 Insert buffer free list page 9 2 Freshly allocated page 10 1 Insert buffer bitmap 11 0 System page 12 0 Transaction system page 13 1 File Space Header 14 0 Extent descriptor page 15 0 BLOB page 16 0 Compressed BLOB page 17 0 Other type of page 18=============================================== 19Additional information: 20Undo page type: 0 insert, 0 update, 0 other 21Undo page state: 0 active, 0 cached, 0 to_free, 0 to_purge, 0 prepared, 0 other
--page-type-dump,-D| Property | Value |
|---|---|
| Command-Line Format | --page-type-dump=name |
| Type | String |
| Default Value | [none] |
테이블스페이스 내 각 페이지에 대한 페이지 타입 정보를 stderr 또는 stdout으로 덤프합니다. 사용 예:
1innochecksum --page-type-dump=/tmp/a.txt ../data/test/tab1.ibd
--log,-l| Property | Value |
|---|---|
| Command-Line Format | --log=path |
| Type | File name |
| Default Value | [none] |
innochecksum 도구에 대한 로그 출력입니다. 로그 파일 이름을 제공해야 합니다. 로그 출력에는 각 테이블스페이스 페이지에 대한 체크섬 값이 포함됩니다. 압축되지 않은 테이블의 경우 LSN 값도 제공됩니다. 사용 예:
1innochecksum --log=/tmp/log.txt ../data/test/tab1.ibd
또는:
1innochecksum -l /tmp/log.txt ../data/test/tab1.ibd
- 옵션.- 옵션을 지정하여 표준 입력에서 읽도록 합니다. “표준 입력에서 읽기”가 예상될 때 - 옵션이 없으면, innochecksum은 “-” 옵션이 생략되었음을 나타내는 innochecksum 사용법 정보를 출력합니다. 사용 예:
1cat t1.ibd | innochecksum -
다음 예제에서 innochecksum은 원래 t1.ibd 파일을 변경하지 않고 a.ibd에 crc32 체크섬 알고리즘을 기록합니다.
1cat t1.ibd | innochecksum --write=crc32 - > a.ibd
다음 예제는 여러 사용자 정의 테이블스페이스(.ibd 파일)에 대해 innochecksum을 실행하는 방법을 보여줍니다.
“test” 데이터베이스 내의 모든 테이블스페이스(.ibd) 파일에 대해 innochecksum을 실행합니다:
1innochecksum ./data/test/*.ibd
파일 이름이 “t”로 시작하는 모든 테이블스페이스 파일(.ibd 파일)에 대해 innochecksum을 실행합니다:
1innochecksum ./data/test/t*.ibd
data 디렉터리 내의 모든 테이블스페이스 파일(.ibd 파일)에 대해 innochecksum을 실행합니다:
1innochecksum ./data/*/*.ibd
참고
Windows 운영 체제에서는 cmd.exe와 같은 Windows 셸이 글롭 패턴 확장을 지원하지 않기 때문에, 여러 사용자 정의 테이블스페이스 파일에 대해 innochecksum을 실행하는 것은 지원되지 않습니다. Windows 시스템에서는 각 사용자 정의 테이블스페이스 파일에 대해 개별적으로 innochecksum을 실행해야 합니다. 예를 들어:
1innochecksum.exe t1.ibd 2innochecksum.exe t2.ibd 3innochecksum.exe t3.ibd
기본적으로 InnoDB 시스템 테이블스페이스 파일은(ibdata1) 하나만 존재하지만, innodb_data_file_path 옵션을 사용하여 시스템 테이블스페이스에 대해 여러 파일을 정의할 수 있습니다. 다음 예제에서는 innodb_data_file_path 옵션을 사용하여 ibdata1, ibdata2, ibdata3의 세 개 파일을 시스템 테이블스페이스에 대해 정의합니다:
1./bin/mysqld --no-defaults --innodb-data-file-path="ibdata1:10M;ibdata2:10M;ibdata3:10M:autoextend"
세 파일(ibdata1, ibdata2, ibdata3)은 하나의 논리 시스템 테이블스페이스를 형성합니다. 하나의 논리 시스템 테이블스페이스를 구성하는 여러 파일에 대해 innochecksum을 실행하려면, innochecksum은 표준 입력에서 테이블스페이스 파일을 읽기 위한 - 옵션을 필요로 하며, 이는 여러 파일을 이어붙여 하나의 단일 파일을 만드는 것과 동일합니다. 위에서 제시한 예제의 경우, 다음 innochecksum 명령을 사용합니다:
1cat ibdata* | innochecksum -
“-” 옵션에 대한 자세한 내용은 innochecksum 옵션 정보를 참조하십시오.
참고
Windows 운영 체제에서는 cmd.exe와 같은 Windows 셸이 글롭 패턴 확장을 지원하지 않기 때문에, 동일한 테이블스페이스 내의 여러 파일에 대해 innochecksum을 실행하는 것은 지원되지 않습니다. Windows 시스템에서는 각 시스템 테이블스페이스 파일에 대해 개별적으로 innochecksum을 실행해야 합니다. 예를 들어:
1innochecksum.exe ibdata1 2innochecksum.exe ibdata2 3innocsum.exe ibdata3
6.6.1 ibd2sdi — InnoDB Tablespace SDI Extraction Utility
6.6.3 myisam_ftdump — Display Full-Text Index information