delete나 truncate 같은 명령으로 데이터를 지웠을때 복구하는 방법이다.
mysql의 모든 명령들은 로그를 남기기때문에 얼마든지 가능하다.
우선 mysql의 DB가 쌓이는 디렉토리로 이동한다.
대부분 /usr/local/mysql/data /usr/local/mysql/var 등으로 설정되어 있을 것이다.
그 해당 디렉토리로 이동하면 xxx-bin.001 xxx-bin.002 같은 바이너리 파일들이 존재 할 것이다.
버전 및 컴파일 설치 옵션에 따라 경로나 파일명이 조금 틀릴 수는 있으나 대부분 ib_logfile0과 같이 logfile이라는 느낌이 강한
파일로 어딘가에는 저장이 되어 있을 것이다.
이게 바로 DB를 첨 생성할때부터 지금까지 쌓여온 로그인데 이 파일을 활용하면 삭제된 데이터도 얼마든지 살릴수 있는 것이다.
바이너리 파일이기때문에 그냥 접근면 당근 문자들이 깨져보이고
mysqlbinlog 명령을 이용해서 사용해야한다.
다음은 그 실행예제이다.
일단 DB 디렉토리로 이동한다.
# cd /usr/local/mysql/data
바이너리 파일을 소스파일로 변환한다.
# ../mysqlbinlog xxx-bin.002 > res.sql
필요한 구문만 가져온다.
# grep "insert" res.sql > res1.sql
이렇게 하시면 rescue1.sql은 지금까지의 인서트구문으로 재작성된다.
여기서 적당히 필요없는 부분은 지우면 된다.
이제 필요한 부분만 추려서 DB에 넣으면 복구 끝인것이다.
# mysql -u 계정아이디 -p DB이름 < res1.sql
innodb로 된 mysql frm ibd 파일만 있을 경우 table 복구 하기
LIST
'WEB > DB' 카테고리의 다른 글
Mysql 기본 사용법과 root 비밀번호 분실시 재설정 (0) | 2018.12.22 |
---|---|
mysql-bin 로그 삭제하는 방법입니다. (0) | 2016.08.19 |
오라클11g 설치 (CentOS) (0) | 2016.07.27 |
mysql 동접자 (동시접속자) 수 늘리기 + 확인 (0) | 2016.07.22 |
음력/양력/간지/공휴일 표시 MSQL DB 테이블 (2) | 2016.07.22 |