gbmin's Tech Notes

서버 구축 및 유지보수, 클라우드 컴퓨팅, 네트워크 보안, IT 분야 기술 노트. :)

Tech Notes/Mysql & MariaDB

MYSQL/MARIADB CHECK, REPAIR, OPTIMIZE, mysqlcheck 사용방법

gbmin 2023. 6. 3. 11:44

mysql, mariadb를 관리하다 보면 테이블이 깨지는 경우가 있다. 테이블이 깨지는 이유는 갑작스러운 시스템 종료 또는 MySQL 서버 충돌, 디스크 공간 부족, 하드웨어 결함, MySQL 버그 또는 소프트웨어 문제, 사용자의 잘못된 쿼리나 부적절한 테이터 조작으로 인해 발생된다.
이런 이유로 테이블이 깨지거나 손상되었을 때 손상 여부를 검사, 복구, 최적화하는 기능들이을 제공 한다 

 

1. MYSQL CHECK

CHECK 명령어는 데이터베이스 테이블의 무결성을 확인하는 데 사용된다. CHECK 명령어를 사용하면 테이블에서 잘못된 레코드나 불일치된 데이터를 찾을 수 있다.

CHECK TABLE table_name;



2. MYSQL REPAIR

REPAIR 명령어는 데이터베이스 테이블에서 발견된 손상된 데이터를 복구하는 데 사용된다. MySQL은 테이블을 자동으로 복구하는 기능도 제공하지만, 명시적으로 REPAIR 명령어를 사용하여 복구할 수도 있다.

REPAIR TABLE table_name;

 

3. MYSQL OPTIMIZE

OPTIMIZE 명령어는 데이터베이스 테이블의 성능을 최적화하는 데 사용된다. 테이블에 대해 자주 실행되는 INSERT, UPDATE, DELETE 작업으로 인해 테이블의 공간 사용이 비효율적으로 변할 수 있는데 이때 OPTIMIZE 명령어를 사용하면 테이블의 공간을 최적화하여 성능을 향상할 수 있다. OPTIMIZE는 레코드의 물리적인 순서를 정렬하고 중간 삭제된 레코드를 정리하여 테이블의 공간을 최적화한다.

OPTIMIZE TABLE table_name;

 

4. mysqlcheck

mysqlcheck은 MySQL 데이터베이스의 테이블을 점검하고 복구하는 유틸리티이다. DB의 전체 상태를 점검하거나 전체를 최적화해야 할 때는 mysqlcheck 명령어가 효율적이다. mysqlcheck는 DB에 접속해서 사용하는 게 아니고 쉘에서 직접 이용할 수 있다.

 

주요 옵션
옵션 설명
-u 사용자명, --user=사용자명 MySQL 서버에 로그인 사용자명.
-p, --password 사용자 암호를 입력하도록 요청.
-h 호스트명, --host=호스트명 MySQL 서버의 호스트명.
-P 포트번호, --port=포트번호 MySQL 서버의 포트번호를 지정 (기본값: 3306)
-S 소켓파일, --socket=소켓파일 MySQL 서버의 Unix 소켓 파일을 지정.
-A, --all-databases 모든 데이터베이스에 대해 점검 또는 복구.
-r, --repair 복구 작업을 수행, 손상된 테이블을 복구.
-o, --optimize 최적화 작업을 수행, 테이블의 공간을 최적화.
-C, --check 체크 작업을 수행, 테이블의 무결성을 확인.
-q, --quick 퀵 검사 모드, 테이블 구조만 검사하고 데이터를 확인하지 않음.
-F, --force 강제로 작업, 실행 중에 오류가 발생해도 진행.
-B, --batch-size=크기 작업을 일괄 처리할 때 사용되는 크기를 지정.

 

사용예시

데이터베이스의 모든 테이블을 점검하고 복구

mysqlcheck -u 사용자명 -p --repair 데이터베이스명

 

특정 테이블을 점검하고 복구

mysqlcheck -u 사용자명 -p --repair 데이터베이스명 테이블명


모든 데이터베이스의 모든 테이블을 최적화

mysqlcheck -u 사용자명 -p --optimize --all-databases