Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

명령줄에서 MySQL 테이블 복구하는 방법


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;