08/01
2011
MySQL 장애... (화려한 휴가의 시작)
흑흑
정말 힘들었다.
장애 복구 함.
아주 그냥!!! 휴가 첫날인데... 화려한 휴가의 시작이구나...
장애시간 : 2011년 8월 1일 03시 40분경부터 2011년 8월 1일 06시 40분까지 약 3시간
원인 : 개발을 위하여 새로옮긴 tz17서버 MySQL에 접근권한을 부여하던 중
기본 사용자 정보 오류가 발생함
장애상황 : MySQL에 접근이 불가능하여 작업 자체가 불가능 함
에러는 몇번인지 까먹었는데 ㅠ 로컬호스트에서 접근 할 수 없다고...
그런데 그 에러로 찾아보고 해결책을 보면 전부 MySQL에 접속해서 하라는데...
접속 자체가 불가능하여 할 수 없었다.
복구 : 우선 밀키DB는 변경한 것이 없어서 문제가 없을 것이라고 판단.
데이터 파일을 찾아서 가상 머신에 OS와 mysql을 설치 해서 데이터 백업 후
tz17서버에 MySQL모두 제거 후 리부팅 후 다시 설치하여 복구함.
결과 : 복구 완료. 이노디비에 대한 관리에 대해서 알게 되었음.
향후 과제 : 스케줄 백업 만들어 두기. 아래 과정 정리해서 글 작성하기.
참고 사이트 : http://blog.naver.com/skkong89/90106382507 <- 서버관리 자료 많음 좋은 블로그
[출처] MySQL InnoDB 복구 작업|작성자 지윤서윤
시스템 백업 과정
========================
시나리오: 장애가 발생한 CentOS의 MySQL InnoDB 파일을 이용해서(C 서버), Slackware 상에(S 서버)
복구하고 mysqldump 받기
Table Space: /mydb_db/mydb_sp/
Database: mydb
1) C 서버: 다음과 같은 파일들이 복구 시 필요하다. 아래 위치의 파일들을 백업받는다.
ib_logfile1, ib_logfile0, ibdata1, ibdata2
/mydb_db/mydb_sp/*
table관련 .frm 파일들
/usr/local/mysql/var/mydb/*
2) S 서버: my.cnf 파일의 로그 사이즈를 기존 시스템과 동일하게 한다. <-이말이 뭔소리인줄 몰랐는데 설정파일 까보면 이노디비 로그 사이즈가 있음 같게 해야 함
# /etc/rc.d/rc.mysqld stop
# cd /var/lib/mysql/
# mkdir mydb
# cp ~/db/var/mydb/* /var/lib/mysql/mydb/
# chown mysql:root mydb
# chown mysql:mysql mydb/*
2단계까지 하고 재시작하면 에러가 나면서 mysql 을 시작할 수 없다.
3) S 서버: my.cnf 에 다음줄을 추가한다.
<<<
...
# Uncomment the following if you are using InnoDB tables
innodb_force_recovery = 4
...
>>>
4) S 서버: 재시작
# /etc/rc.d/rc.mysqld start
5) S 서버: mysqldump 받을 수 있다.
# mysqldump mydb > mydb.2007
시스템 복구 과정
========================
6) C 서버: mysqld 중지
# service mysqld stop
7) C 서버:
# vi /etc/my.cnf
innodb_force_recovery = 4 옵션을 제거한다.
8) C 서버: 기존 Table Space내의 파일들과 frm 관련 파일들을 삭제한다.
# rm /mydb_db/mydb_sp/*
# rm /usr/local/mysql/var/mydb/*
9) C 서버: mysqld 재시작
# service mysqld start
10) C 서버: data import
# mysql mydb < mydb.2007