MySQL의 REPAIR TABLE 명령은 InnoDB 엔진에는 적용되지 않으며, 오직 MyISAM 엔진 타입의 테이블에만 사용할 수 있습니다. 따라서 테이블을 복구하기 전에 먼저 엔진 타입을 MyISAM으로 변경해야 합니다.
다음은 전체 과정을 단계별로 살펴보는 예시입니다.
1단계: 테이블 생성
mysql> create table RepairTableDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected (0.51 sec)
2단계: 엔진 타입을 MyISAM으로 변경
테이블을 MyISAM 엔진으로 변환하려면 ALTER TABLE 문을 사용합니다.
mysql> ALTER TABLE RepairTableDemo ENGINE = MyISAM; Query OK, 0 rows affected (1.14 sec) Records: 0 Duplicates: 0 Warnings: 0
3단계: 레코드 삽입
생성된 테이블에 샘플 데이터를 삽입합니다.
mysql> insert into RepairTableDemo values(1,'John'),(2,'Carol'),(3,'Johnson'); Query OK, 3 rows affected (0.06 sec) Records: 3 Duplicates: 0 Warnings: 0
4단계: 저장된 데이터 확인
테이블의 모든 레코드를 조회해 봅니다.
mysql> select *from RepairTableDemo;
다음은 실행 결과입니다.
+------+---------+ | id | name | +------+---------+ | 1 | John | | 2 | Carol | | 3 | Johnson | +------+---------+ 3 rows in set (0.00 sec)
5단계: 테이블 복구
테이블을 복구하는 기본 구문은 다음과 같습니다.
REPAIR TABLE yourTableName;
실제 쿼리는 다음과 같습니다.
mysql> REPAIR TABLE RepairTableDemo;
아래 출력 결과에서 복구 상태가 정상(OK)임을 확인할 수 있습니다.
+--------------------------+--------+----------+----------+ | Table | Op | Msg_type | Msg_text | +--------------------------+--------+----------+----------+ | business.repairtabledemo | repair | status | OK | +--------------------------+--------+----------+----------+ 1 row in set (0.10 sec)
참고: REPAIR TABLE 옵션 활용
상황에 따라 REPAIR TABLE 문에 옵션을 추가하면 더 효율적인 복구가 가능합니다.
- QUICK: 인덱스 트리만 빠르게 복구하며, 데이터 파일은 수정하지 않습니다.
- EXTENDED: 행 단위로 데이터를 검사하고 복구하므로 시간이 더 걸리지만 더욱 철저한 복구가 가능합니다.
더 철저한 복구가 필요한 경우 다음과 같이 실행합니다.
mysql> REPAIR TABLE RepairTableDemo EXTENDED;