본문 바로가기
DATABASE

mysql 오류 확인 및 리커버리(innodb_force_recovery)

by 하이바네 2021. 8. 24.
반응형

이번 프로젝트를 하면서 DB가 깨지는 현상이 발생했다.

 

그 후에 mysql server자체가 켜지지 않고 오류 로그를 봐도 이해 되지 않는 현상 발생..

 

그럼 mysql server가 켜지지 않을떄는 innodb_force_recovery를 해봐야한다.

 

/etc/mysql/mysql.conf.d/mysqld.cnf파일 안에 추가를 해야하며 각 레벨마다 다른 점이 있다.

 

레벨0이 기본 모드이고 1부터 6까지 순서대로 해보기를 추천한다(레벨이 올라갈수록 데이터 유실률이 올라갈 수 있다는것)

 

https://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html

 

MySQL :: MySQL 8.0 Reference Manual :: 15.21.3 Forcing InnoDB Recovery

15.21.3 Forcing InnoDB Recovery To investigate database page corruption, you might dump your tables from the database with SELECT ... INTO OUTFILE. Usually, most of the data obtained in this way is intact. Serious corruption might cause SELECT * FROM tbl_

dev.mysql.com

 

 

나의 경우에는 레벨4에서 mysql-server가 켜졌고, 테이블들을 점검해봤다.

 

테이블 오류 점검 명령 : check table 테이블명

테이블 오류 수정 명령 : repair table 테이블명(나의 경우에는 시도했지만 불가능했다...)

다행히 다른 테이블들은 오류가 없었는데 세션을 관리하는 테이블에 오류가 있었다.

 

그래서 저 테이블만 삭제를 하고 어떻게 하면 되겠지라는 생각으로 다양한 방법으로 해봤으나...가장 추천하는것은 mysql server가 켜진 시점에 깨진 테이블을 제외한 나머지라도 백업을 하는것이다.

 

그리고 mysql을 지우고 다시 설치 후 dump뜬거를 복원(...)

일단 나의 경우에는 이게 괜찮았다(깨진게 세션 테이블이니깐 다행이지 정말...)

 

mysql 삭제 명령어 : sudo apt-get remove --purge mysql*

남은 패키지 확인 명령어 : dpkg -l | grep mysql

 

이번에 DB가 깨지고 느낀건데 정말 지옥 같았다. 해결을 해야하니..

게다가 ssh로 리붓을 시켰는데 서버가 안 켜지는 현상까지 아오...정말 다사다난한 이틀이었다.

728x90

댓글