상세 컨텐츠

본문 제목

삭제한 mysql DB 복구방법

Work/Study

by 물빛미르 2015. 2. 4. 11:30

본문

728x90

delete나 truncate 같은 명령으로 데이터를 지웠을때 복구하는 방법입니다.
mysql의 모든 명령들은 로그를 남기기때문에 가능합니다.
일단 mysql의 DB가 쌓이는 디렉토리로 이동합니다.
대게 /usr/local/mysql/data /usr/local/mysql/var 등으로 설정해 놓으셨을겁니다.
해당 디렉토리로 이동하면 xxx-bin.001 xxx-bin.002 같은 바이너리 파일들이 존재할겁니다.
이게 바로 DB를 첨 생성할때부터 지금까지 쌓여온 로그인데요 이 파일을 활용하시면 삭제된 데이터도 살릴수 있습니다.


바이너리 파일이기때문에 그냥 접근하시면 이상한 문자들이 보이구요
mysqlbinlog 명령을 이용하셔서 사용해야 합니다.
다음은 예제입니다.

 

일단 DB 디렉토리로 이동한다.
# cd /usr/local/mysql/data

 

바이너리 파일을 소스파일로 변환한다.
# ../mysqlbinlog leopit-bin.002 > rescue.sql

 

필요한 구문만 가져온다.
# grep "insert" rescue.sql > rescue1.sql

 

이렇게 하시면 rescue1.sql은 지금까지의 인서트구문이 다 들어옵니다.
여기서 필요없는 부분은 지우세요

이제 최종적으로 DB에 삽입만 하시면 됩니다.
# mysql -u 계정아이디 -p DB이름 < rescue1.sql

 

[원글] http://www.qdata.co.kr/bo/bbs/board.php?bo_table=myt&wr_id=50

 

 

MySQL 로그 설정 방법

 

MySQL 로그파일

유닉스에서의 에러 로그 : 'hostname'.err
shell>find / -name 'hostname'.err

윈도우에서의 에러 로그 : /mysql/data/mysql.err

리눅스에서 my.cnf파일 만들기 : my-huge.cnf 나 my-medium.cnf 파일을 찾아서
/etc/ 아래에 복사
shell>cp my-medium.cnf /etc/my.cnf

윈도우에서 my.ini 파일 만들기 : /mysql/ 디렉토리 아래에 보면 my-small, my-medium, my-large, my-huge
파일이 존재하는데 이중 1개를 my.ini로 이름을 바꿔서 c:\winnt 아래에 복사.
* windows7에선 C:\ProgramData\MySQL\MySQL Server 5.5\my.ini에 있음

리눅스 my.cnf 파일에 쿼리 로그 사용하게 하기 ([mysqld] 섹션 아래에 설정)

[mysqld]
# MyISAM 로그
log-isam=/usr/local/mysql/data/myisamlog.log
# 쿼리 로그
log=/usr/local/mysql/data/mysql.log
# 수정 로그
log-update=/usr/local/mysql/data/mysql-update.log
# 바이너리 로그
log-bin=/usr/local/mysql/data/mysql-bins.log
# 슬로우 쿼리 로그
log-slow-queries=/usr/local/mysql/data/mysql-slow.log
long_query_time=5

윈도우 my.ini 파일에 쿼리 로그 사용하게 하기 ([mysqld] 섹션 아래에 설정)

[mysqld]
# MyISAM 로그
log-isam
# 쿼리 로그
log=c:/mysql/data/mysql.log
# 수정 로그
log-update=c:/mysql/data/mysql-update.log
# 바이너리 로그
log-bin=c:/mysql/data/mysql-bins.log
# 슬로우 쿼리 로그
log-slow-queries=c:/mysql/data/mysql-slow.log
long_query_time=5

*수정후 mysql 데몬 재실행.


출처 - http://cafe.naver.com/friendvirus.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=27

 

(순서)
1. /etc/my.cnf 파일을 연다.
2. 로그와 관련된 설정을 심어준다.
3. 저장 후에 MySql을 재시동 한다.


3번 항목 재시동이라는 부분이 마음에 걸리지만, 그래도 한번 적용으로 두고두고 득(得)이 된다.
설정법은 아래와 같다.

# 바이너리 로그 설정
    log-bin = bin_logs
# 쿼리 로그 설정
    log = query_logs
# 에러 로그 설정
    log-error = err_logs
# 느린 쿼리(slow query) 설정
    log-slow-queries = slow_logs
# Update 쿼리 설정
    log-update = update_logs

728x90

관련글 더보기