본문 바로가기

데이터베이스/MySql & MariaDB

[MYSQL/MARIADB] Crash(손상) 복구하기

업무중 기타 고객사의 서버 전원 상태가 매우 불안정한 곳의 데이터베이스의 특정 테이블에서 Crash 현상(손상) 이 발생 했다.


해당 내용을 crash 가 발생하는 원인은 다음과 같다고 한다.

원문 : http://passkorea.net/Board/ViewDoc.aspx?brdNo=11&docNo=36082


1. 디스크 용량 부족

2. 서버의 예기치 못한 다운

3. 디스크 오류

4. mysql db 의 일시적인 오류


본인이 생각 하기에는 4번과 2번의 조합으로 해당 carah 가 발생 한 것으로 판단된다.



이에 특정 테이블의 crash 또는 기타 데이터베이스의 전체 table crash 을 복구 하는 내용은 다음 내용을 참고하면 된다.





여기서 주의 할점은 Crash 의 복수 repair table 의 경우 테이블이 MyISAM 일 경우 복구가 가능하다.

왜 그런지 모르겠지만 innodb타입의 테이블은 손상되지 않았다 -_-;; 이건뭔가 있다... 

왜 특정 테이블만 손상이 일어나는 것일까.. 싶다.


아래 방법이 안될경우 테이블의 데이터를 받아 백업하고 다시 생성하거나, 그냥 지워버리면 되기는 하더라.. 

이상하다 확실히..


원문 : http://nota.tistory.com/74


MySQL 에서는 테이블이 손상 되었는지 여부를 확인(check table)하고, 손상된 테이블이라면 테이블을 복구(repair table)하고, 속도 개선을 위해 테이블을 최적화(optimize table) 하는 기능들을 제공한다. 이 기능들에 대한 쿼리는 상당히 단순하다.



1. MySQL 특정 테이블 체크(check)

DB 콘솔 접속 후

# use [DB명];                   => 작업할 DB를 선택

# check table [테이블명];   => 확인할 테이블을 체크



2. MySQL 특정 테이블 복구(repair)

DB 콘솔 접속 후

# use [DB명];                   => 작업할 DB를 선택                 

# repair table [테이블명];    => 복구할 테이블을 복구



3. MySQL 특정 테이블 최적화(optimize)

DB 콘솔 접속 후

# use [DB명];                    => 작업할 DB를 선택

# optimize table [테이블명]; => 최적화할 테이블을 최적화



그리고 위와 같이 특정 테이블에 대해 체크, 복구, 최적화를 할 수 있으나, 서버 장애 등으로 인해 DB의 전체 상태를 점검하거나 전체를 최적화하고 싶을 때는 테이블 하나하나 확인을 하기 어렵다. 그럴 때 아래와 같이 특정 DB의 모든 테이블을 체크하고, 복구하고, 최적화 할 수 있다.



4. MySQL 특정 DB의 모든 테이블 체크 및 자동 복구

서버 콘솔에서

# cd [MySQL_HOME]/bin                                                                

=> MySQL 설치 홈의 bin 폴더로 이동

# ./mysqlcheck -u [DB계정] -p[패스워드] --auto-repair [DB명]           

=> 해당 DB의 모든 테이블을 체크 및 자동복구



5. MySQL 특정 DB의 모든 테이블 최적화

서버 콘솔에서

# cd [MySQL_HOME]/bin                                                                

=> MySQL 설치 홈의 bin 폴더로 이동

# ./mysqlcheck -u [DB계정] -p[패스워드] --optimize [DB명]               

=> 해당 DB의 모든 테이블을 최적화



'데이터베이스 > MySql & MariaDB' 카테고리의 다른 글

[Mysql]CSV Import (엑셀 업로드)  (0) 2016.12.19
mysql 테이블 각종 기본명령어  (0) 2016.11.17
mysql,maraidb 느린쿼리 로깅  (0) 2016.07.06
MySql권한주기  (0) 2015.11.30
mysql튜닝  (0) 2015.11.20