mysqlcheck는 MySQL에서 제공하는 대표적인 테이블 유지보수(maintenance) 클라이언트입니다. 하나의 명령으로 테이블을 검사(CHECK), 복구(REPAIR), 최적화(OPTIMIZE), 분석(ANALYZE)할 수 있어 데이터베이스 관리자에게 필수적인 도구로 꼽힙니다.
--databases 또는 --all-databases 옵션을 사용해 하나 이상의 데이터베이스에 속한 모든 테이블을 한 번에 처리하는 경우, mysqlcheck 실행에 상당한 시간이 소요될 수 있습니다. MySQL 업그레이드 절차 역시 테이블 검사가 필요하다고 판단되면 내부적으로 mysqlcheck와 동일한 방식으로 테이블을 처리하기 때문에 마찬가지로 시간이 오래 걸릴 수 있습니다.
mysqlcheck의 특징과 용도
서버 중지 없이 사용 가능: mysqlcheck는
mysqld서버가 실행 중인 상태에서 사용하도록 설계되었습니다. 따라서 테이블 유지보수를 위해 서버를 종료할 필요가 없습니다. 내부적으로는CHECK TABLE,REPAIR TABLE,ANALYZE TABLE,OPTIMIZE TABLE과 같은 SQL 문을 사용자가 편리하게 활용할 수 있도록 자동으로 변환해 실행합니다.작업에 맞는 SQL 문 자동 선택: 사용자가 지정한 옵션을 분석해 수행하려는 작업에 어떤 SQL 문이 적합한지 스스로 판단한 뒤, 해당 문장을 서버로 전송하여 실행합니다.
mysqlcheck 호출 방법
mysqlcheck는 다음 세 가지 방식으로 호출할 수 있습니다.
shell> mysqlcheck [options] db_name [tbl_name ...]
shell> mysqlcheck [options] --databases db_name ...
shell> mysqlcheck [options] --all-databases
첫 번째 형식: 특정 데이터베이스의 지정된 테이블만 처리합니다.
두 번째 형식:
--databases옵션으로 지정한 하나 이상의 데이터베이스 전체를 처리합니다.세 번째 형식:
--all-databases옵션으로 서버의 모든 데이터베이스를 일괄 처리합니다.
기본 동작과 실행 파일 이름 변경
mysqlcheck의 기본 동작은 테이블 검사(--check)입니다. 흥미로운 점은 실행 파일의 이름을 변경하면 기본 동작을 바꿀 수 있다는 것입니다. 예를 들어 기본적으로 테이블을 복구하는 도구가 필요하다면, mysqlcheck의 복사본을 만들어 mysqlrepair라는 이름을 붙이거나, 같은 이름의 심볼릭 링크(symlink)를 생성하면 됩니다. 이후 mysqlrepair를 호출하면 테이블 검사가 아닌 복구 작업이 기본으로 수행됩니다.
이름 기반 기본 옵션 정리
mysqlrepair: 기본 옵션이
--repair로 설정되어 테이블을 복구합니다.mysqlanalyze: 기본 옵션이
--analyze로 설정되어 테이블을 분석합니다.mysqloptimize: 기본 옵션이
--optimize로 설정되어 테이블을 최적화합니다.
정리
mysqlcheck는 서버를 중지하지 않고도 테이블 검사·복구·최적화·분석 작업을 수행할 수 있는 강력한 유지보수 도구입니다. 실행 파일 이름을 활용한 기본 동작 변경 기능까지 익혀두면, 데이터베이스 운영 환경에서 반복적인 유지보수 작업을 훨씬 효율적으로 자동화할 수 있습니다.