innochecksum 은InnoDB파일에대한 체크섬을 인쇄 합니다. 이 도구는InnoDB테이블 스페이스 파일을읽고, 각 페이지의 체크섬을 계산하고, 계산 된 체크섬을 저장된 체크섬과 비교하고, 손상된 페이지를 나타내는 불일치를보고합니다. 원래는 정전 후 테이블 스페이스 파일의 무결성 확인 속도를 높이기 위해 개발되었지만 파일 복사 후에도 사용할 수 있습니다. 체크섬 불일치로 인해InnoDB실행중인 서버가 의도적으로 종료되기 때문에 프로덕션 서버가 손상된 페이지를 만날 때까지 기다리는 것보다이 도구를 사용하는 것이 좋습니다.
서버가 이미 연 테이블 스페이스 파일에는 innochecksum을 사용할 수 없습니다. 이러한 파일의CHECK TABLE경우 테이블 스페이스 내의 테이블을 확인하는데사용해야합니다. 서버가 이미 열려있는 테이블 스페이스에서 innochecksum 을 실행하려고 하면" Unable to lock file "오류가 발생합니다.
체크섬 불일치가 발견되면 일반적으로 백업에서 테이블 스페이스를 복원하거나 서버를 시작하고 mysqldump 를 사용 하여 테이블 스페이스 내의 테이블을 백업 하려고 시도합니다 .
다음 과 같이 innochecksum을 호출 하십시오.
shell> innochecksum [options] file_name
innochecksum 옵션
innochecksum 은 다음 옵션을 지원합니다. 페이지 번호를 참조하는 옵션의 경우 번호는 0부터 시작합니다.
-
--help, -?
명령 줄 도움말을 표시합니다. 사용 예 :
shell> innochecksum --help
-
--info, -I
동의어 --help. 명령 줄 도움말을 표시합니다. 사용 예 :
shell> innochecksum --info
-
--version, -V
버전 정보를 표시합니다. 사용 예 :
shell> innochecksum --version
-
--verbose, -v
Verbose 모드; 5 초마다 진행률 표시기를 로그 파일에 인쇄합니다. 진행률 표시기가 인쇄 되려면를 사용하여 로그 파일을 지정해야합니다 --log option. verbose모드 를 켜려면 다음을 실행하십시오.
shell> innochecksum --verbose
상세 모드를 끄려면 다음을 실행하십시오.
shell> innochecksum --verbose=FALSE
--verbose옵션을 선택하고 --log옵션을 동시에 지정 될 수 있습니다. 예를 들면 :
shell> innochecksum --verbose --log=/var/lib/mysql/test/logtest.txt
로그 파일에서 진행률 표시기 정보를 찾으려면 다음 검색을 수행 할 수 있습니다.
shell> cat ./logtest.txt | grep -i "okay"
로그 파일의 진행률 표시기 정보는 다음과 유사하게 나타납니다.
page 1663 okay: 2.863% done page 8447 okay: 14.537% done page 13695 okay: 23.568% done page 18815 okay: 32.379% done page 23039 okay: 39.648% done page 28351 okay: 48.789% done page 33023 okay: 56.828% done page 37951 okay: 65.308% done page 44095 okay: 75.881% done page 49407 okay: 85.022% done page 54463 okay: 93.722% done ...
-
--count, -c
파일의 페이지 수를 인쇄하고 종료합니다. 사용 예 :
shell> innochecksum --count ../data/test/tab1.ibd
-
--start-page=num, -s num
이 페이지 번호에서 시작하십시오. 사용 예 :
shell> innochecksum --start-page=600 ../data/test/tab1.ibd
또는:
shell> innochecksum -s 600 ../data/test/tab1.ibd
-
--end-page=num, -e num
이 페이지 번호에서 끝납니다. 사용 예 :
shell> innochecksum --end-page=700 ../data/test/tab1.ibd
또는:
shell> innochecksum --p 700 ../data/test/tab1.ibd
-
--page=num, -p num
이 페이지 번호 만 확인하십시오. 사용 예 :
shell> innochecksum --page=701 ../data/test/tab1.ibd
-
--strict-check, -C
엄격한 체크섬 알고리즘을 지정하십시오. 옵션에는 innodb, crc32및이 포함됩니다 none.
이 예에서는 innodb체크섬 알고리즘이 지정됩니다.
shell> innochecksum --strict-check=innodb ../data/test/tab1.ibd
이 예에서는 crc32체크섬 알고리즘이 지정됩니다.
shell> innochecksum -C crc32 ../data/test/tab1.ibd
다음 조건이 적용됩니다.
-
--strict-check 옵션을 지정하지 않으면 innochecksum이innodb , crc32및 에 대해 유효성을 검사 none합니다.
-
none옵션 을 지정하면에서 생성 한 체크섬 만 none허용됩니다.
-
innodb옵션 을 지정하면에서 생성 한 체크섬 만 innodb 허용됩니다.
-
crc32옵션 을 지정하면에서 생성 한 체크섬 만 crc32허용됩니다.
-
-
--no-check, -n
체크섬을 다시 쓸 때 체크섬 확인을 무시하십시오. 이 옵션은 innochecksum --write 옵션 에서만 사용할 수 있습니다. 경우 --write옵션이 지정되지 않은, innochecksum이 종료됩니다.
이 예에서는 innodb잘못된 체크섬을 대체하기 위해 체크섬을 다시 작성합니다.
shell> innochecksum --no-check --write innodb ../data/test/tab1.ibd
-
innochecksum이 종료 되기 전에 허용되는 최대 체크섬 불일치 수 입니다. 기본 설정은 0 인 경우이다 --allow-mismatches=N, N>=0, N불일치가 허용되고 innochecksum의 종료에 N+1. 이 --allow-mismatches0으로 설정 되면 첫 번째 체크섬 불일치 에서 innochecksum이 종료됩니다.
이 예에서는 기존 innodb 체크섬이 --allow-mismatches1 로 설정 되도록 다시 작성됩니다 .
shell> innochecksum --allow-mismatches=1 --write innodb ../data/test/tab1.ibd
하여 --allow-mismatches1로 설정되어, 1000 페이지와 페이지 파일 (700)에 페이지 (600)에서 미스 매치가 다른 경우, 체크섬 페이지 0-599 및 601-699에 대한 업데이트된다. --allow-mismatches이 1로 설정되어 있기 때문에 체크섬은 첫 번째 불일치를 허용하고 두 번째 불일치에서 종료되며 600 페이지와 700-999 페이지는 변경되지 않습니다.
-
--write=name, -w num
체크섬을 다시 작성하십시오. 유효하지 않은 체크섬을 다시 쓸 때 --no-check옵션과 함께 사용해야합니다 --write. 이 --no-check옵션은 innochecksum 에 유효하지 않은 체크섬의 확인을 무시하도록 지시 합니다. --no-check현재 체크섬이 유효한 경우 옵션 을 지정할 필요가 없습니다 .
--write옵션을 사용할 때 알고리즘을 지정해야합니다 . --write옵션에 가능한 값은 다음 과 같습니다.
-
innodb:의 원래 알고리즘을 사용하여 소프트웨어에서 계산 된 체크섬 InnoDB.
-
crc32: crc32알고리즘을 사용하여 계산 된 체크섬 . 하드웨어 지원으로 수행 될 수 있습니다.
-
none: 상수입니다.
이 --write옵션은 전체 페이지를 디스크에 다시 씁니다. 새 체크섬이 기존 체크섬과 동일하면 I / O를 최소화하기 위해 새 체크섬이 디스크에 기록되지 않습니다.
innochecksum 은--write옵션이 사용될때 배타적 잠금을 얻습니다.
이 예에서 crc32체크섬은 다음에 대해 작성됩니다 tab1.ibd.
shell> innochecksum -w crc32 ../data/test/tab1.ibd
이 예에서는 crc32잘못된 crc32 체크섬 을 대체하기 위해 체크섬을 다시 작성 합니다.
shell> innochecksum --no-check --write crc32 ../data/test/tab1.ibd
-
-
테이블 스페이스의 각 페이지 유형 수를 표시합니다. 사용 예 :
shell> innochecksum --page-type-summary ../data/test/tab1.ibd
에 대한 샘플 출력 --page-type-summary:
File::../data/test/tab1.ibd ================PAGE TYPE SUMMARY============== #PAGE_COUNT PAGE_TYPE =============================================== 2 Index page 0 Undo log page 1 Inode page 0 Insert buffer free list page 2 Freshly allocated page 1 Insert buffer bitmap 0 System page 0 Transaction system page 1 File Space Header 0 Extent descriptor page 0 BLOB page 0 Compressed BLOB page 0 Other type of page =============================================== Additional information: Undo page type: 0 insert, 0 update, 0 other Undo page state: 0 active, 0 cached, 0 to_free, 0 to_purge, 0 prepared, 0 other
-
--page-type-dump, -D
테이블 스페이스의 각 페이지에 대한 페이지 유형 정보를 stderr또는에 덤프합니다 stdout. 사용 예 :
shell> innochecksum --page-type-dump=/tmp/a.txt ../data/test/tab1.ibd
-
--log, -l
innochecksum 도구에 대한 로그 출력입니다 . 로그 파일 이름을 제공해야합니다. 로그 출력에는 각 테이블 스페이스 페이지에 대한 체크섬 값이 포함됩니다. 압축되지 않은 테이블의 경우 LSN 값도 제공됩니다. 이 옵션은 이전 릴리스에서 사용 가능했던 옵션을 --log대체합니다 --debug. 사용 예 :
shell> innochecksum --log=/tmp/log.txt ../data/test/tab1.ibd
또는:
shell> innochecksum -l /tmp/log.txt ../data/test/tab1.ibd
-
- 선택권.
-표준 입력에서 읽을 옵션을 지정하십시오 . 경우 -옵션이 때 누락 된 " 표준 읽기 "가 예상된다 innochecksum 의지 출력 innochecksum의 것을 나타내는 사용 정보 " - " 옵션이 생략되었다. 사용 예 :
shell> cat t1.ibd | innochecksum -
이 예에서 innochecksum 은 원본 파일 을 변경하지 않고 crc32체크섬 알고리즘을 씁니다 . a.ibdt1.ibd
shell> cat t1.ibd | innochecksum --write=crc32 - > a.ibd
여러 사용자 정의 테이블 스페이스 파일에서 innochecksum 실행
다음 예제는 여러 사용자 정의 테이블 스페이스 파일 ( 파일) 에서 innochecksum 을 실행하는 방법을 보여줍니다 .ibd.
" test " 데이터베이스 에있는 모든 테이블 스페이스 ( ) 파일에 대해 innochecksum 을 실행 합니다. .ibd
shell> innochecksum ./data/test/*.ibd
파일 이름이 " t "로 시작하는 모든 테이블 스페이스 파일 ( 파일)에 대해 innochecksum 을 실행 .ibd합니다 .
shell> innochecksum ./data/test/t*.ibd
디렉토리의 모든 테이블 스페이스 파일 ( 파일)에 대해 innochecksum 을 실행 .ibd합니다 data.
shell> innochecksum ./data/*/*.ibd
노트
cmd.exe 와 같은 Windows 쉘 은 glob 패턴 확장을 지원하지 않기 때문에 여러 사용자 정의 테이블 스페이스 파일 에서 innochecksum 을 실행하는 것은 Windows 운영 체제에서 지원되지 않습니다. Windows 시스템에서는 각 사용자 정의 테이블 스페이스 파일에 대해 innochecksum을 별도로 실행해야합니다. 예를 들면 :
cmd> innochecksum.exe t1.ibd cmd> innochecksum.exe t2.ibd cmd> innochecksum.exe t3.ibd
여러 시스템 테이블 스페이스 파일에서 innochecksum 실행
기본적으로 InnoDB시스템 테이블 스페이스 파일 ( ibdata1) 은 하나만 있지만이 innodb_data_file_path옵션을 사용하여 시스템 테이블 스페이스에 대한 여러 파일을 정의 할 수 있습니다 . 다음 예에서 시스템 테이블에 대한 세 개의 파일을 사용하여 정의됩니다 innodb_data_file_path옵션을 : ibdata1, ibdata2,와 ibdata3.
shell> ./bin/mysqld --no-defaults --innodb-data-file-path="ibdata1:10M;ibdata2:10M;ibdata3:10M:autoextend"
세 개의 파일 ( ibdata1, ibdata2및 ibdata3)은 하나의 논리 시스템 테이블 스페이스를 형성합니다. 실행하려면 innochecksum 하나 개의 논리적 시스템 테이블 스페이스를 형성 여러 파일에 innochecksum는 필요로 -하나 개의 파일을 생성하기 위해 여러 파일을 연결하는 것과 같습니다 표준 입력에서의 테이블 스페이스 파일을 읽을 수있는 옵션을 선택합니다. 위에 제공된 예의 경우 다음 innochecksum 명령이 사용됩니다.
shell> cat ibdata* | innochecksum -
참고하여주십시오 innochecksum의 에 대한 자세한 내용은 옵션 정보 " - " 옵션을 선택합니다.
노트
cmd.exe 와 같은 Windows 쉘 은 glob 패턴 확장을 지원하지 않으므로 동일한 테이블 스페이스의 여러 파일에서 innochecksum 을 실행하는 것은 Windows 운영 체제에서 지원되지 않습니다. Windows 시스템에서 innochecksum 은 각 시스템 테이블 스페이스 파일에 대해 별도로 실행되어야합니다. 예를 들면 :
cmd> innochecksum.exe ibdata1
cmd> innochecksum.exe ibdata2
cmd> innochecksum.exe ibdata3