메뉴 닫기

[MySQL] .MYI 파일로 MyISAM 테이블 복구하는 방법

 

MyISAM 테이블은 .MYI(index), .MYD(data), .frm(table structure) 파일로 구성
.MYI 파일이 손상된 경우, myisamchk 명령어를 통해 복구가능합니다.

 

📌 MyISAM 테이블 복구 방법 (.MYI 파일 기반) 은 MySQL 3.23, 4.x, 5.0, 5.1, 5.5 등 MyISAM 스토리지 엔진을 사용하는 모든 버전에 적용 가능합니다.

 

MySQL 버전 MyISAM 사용 가능 .MYI 복구 가능 여부

MySQL 버전 MyISAM 사용 가능 .MYI 복구 가능 여부
3.23  ✅기본 스토리지 엔진 ✅ 가능
4.x ✅기본 스토리지 엔진 ✅ 가능
5.0 ✅기본 제공 ✅ 가능
5.1 ✅InnoDB와 혼용 가능 ✅ 가능
5.5 ✅기본은 InnoDB지만 MyISAM 선택 가능 ✅ 가능

 

⚠️ 단, 주의할 점
myisamchk 버전은 MySQL 버전에 맞춰주는 게 좋습니다.
(예: MySQL 5.0이면 MySQL 5.0에서 제공되는 myisamchk 사용이 가장 안전해요.)

InnoDB에는 절대 해당 안 됩니다.
InnoDB는 .ibd, .frm 또는 .ibdata 파일을 사용하므로 복구 방식이 전혀 다릅니다.

복구 전에는 항상 백업 필수! (특히 .MYD와 .frm)

 


 

 

📋 복구 전 사전 점검 절차

1. MySQL 접속 후 테이블 존재 여부 확인

> USE [DB명];
> SHOW TABLES;

테이블이 존재하지 않는다면 .frm 파일이 없거나 손상된 것이므로, 기존 구조에 맞게 테이블을 먼저 생성해야 복구가 가능합니다.

 

2. MySQL 서버 종료

# systemctl stop mysqld 또는 service mysqld stop

 

3. 기존 테이블 파일 백업

# cp -a /var/lib/mysql/[DB명]/[테이블명].* /backup/location/

 

4. 기존 .MYI 파일 삭제 후 새 복구용 .MYI 파일 교체

# rm -f /var/lib/mysql/[DB명]/[테이블명].MYI
# cp [복구할_MYI_파일] /var/lib/mysql/[DB명]/

 

5. 권한 및 퍼미션 설정

# chown mysql:mysql [테이블명].MYI
# chmod 660 [테이블명].MYI

 

🔍 복구 작업 진행
먼저 상태 점검 (-c 옵션)

# myisamchk -c /var/lib/mysql/[DB명]/[테이블명].MYI

 

오류 예시:

myisamchk: error: Found 26884250 keys of 26884251
myisamchk: error: Keypointers and record positions doesn’t match
MyISAM-table ‘테이블명.MYI’ is corrupted
Fix it using switch “-r” or “-o”

 

2. 복구 실행

일반 복구:

# myisamchk -r /var/lib/mysql/[DB명]/[테이블명].MYI

 

보다 안전한 복구 (권장):

# myisamchk -o /var/lib/mysql/[DB명]/[테이블명].MYI

⚠️ -r 또는 -o 중 하나만 실행해야 합니다.

3. 복구 후 재점검

# myisamchk -c /var/lib/mysql/[DB명]/[테이블명].MYI

 

정상적인 출력 예시:

 Data records: 26884251 Deleted blocks: 0
– check file-size
– check key delete-chain

– check record links

 

✅ 복구 확인
1. MySQL 재시작

 # systemctl start mysqld

 

2. 테이블 확인 및 데이터 검증

> USE [DB명];
> SHOW TABLES;
> SELECT COUNT(*) FROM [테이블명];

예시 출력:

+———-+
| COUNT(*) |
+———-+
| 10518923 |
+———-+

👉 데이터 카운트가 정상적으로 나온다면 복구 완료!

 

💡 주의사항
복구 도중 .MYD 또는 .frm 파일까지 손상되었을 경우에는 복구 불가할 수 있습니다.

작업 전 항상 전체 백업을 권장합니다!

이 방법은 MyISAM 스토리지 엔진에서만 유효하며, InnoDB에는 적용되지 않습니다.

 

 

 

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x