반응형
MySQL 테이블이 충돌하여 손상되었을 때 발생하는 오류의 원인과 해결 방법을 알아봅니다.
1. 오류 개요
MySQL에서 특정 테이블을 조회하거나 조작할 때 다음과 같은 오류가 발생할 수 있습니다.
Error 145: Table 'database_name.table_name' is marked as crashed and should be repaired
이 오류는 MyISAM 테이블이 손상되었을 때 발생하며, InnoDB에서는 발생하지 않습니다.
2. 주요 원인
- 비정상적인 MySQL 종료
- 디스크 오류로 인해 테이블이 손상됨
- MyISAM 테이블이 충돌하여 인덱스가 깨짐
- 하드웨어 또는 서버 문제로 인해 데이터 무결성이 깨짐
3. 해결 방법
1) 테이블 복구 명령 실행
손상된 테이블을 복구하려면 다음 명령어를 실행하세요.
REPAIR TABLE table_name;
이 명령어는 손상된 인덱스를 다시 빌드하여 정상적으로 사용할 수 있도록 복구합니다.
2) myisamchk 도구를 사용한 복구
MySQL이 실행 중이라면 먼저 중지하고 다음 명령어를 실행하세요.
myisamchk -r /var/lib/mysql/database_name/table_name.MYI
이 방법은 테이블을 강제로 복구하는 데 효과적입니다.
3) MySQL 정지 후 테이블 복구
MySQL이 실행 중이라면 중지하고 복구하는 것이 좋습니다.
sudo systemctl stop mysql
myisamchk --force --recover /var/lib/mysql/database_name/*.MYI
sudo systemctl start mysql
4) 자동 복구 설정
MySQL이 충돌할 경우 자동으로 테이블을 복구하도록 설정할 수 있습니다.
[mysqld]
myisam_recover_options=FORCE,BACKUP
변경 후 MySQL을 재시작하세요.
sudo systemctl restart mysql
4. 결론
MySQL 테이블이 충돌하여 손상되었을 경우, REPAIR TABLE
또는 myisamchk
도구를 사용하여 복구할 수 있습니다. 자동 복구 설정을 적용하면 향후 동일한 문제가 발생하는 것을 방지할 수 있습니다.
반응형