업무중 기타 고객사의 서버 전원 상태가 매우 불안정한 곳의 데이터베이스의 특정 테이블에서 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 |