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
3번 항목 재시동이라는 부분이 마음에 걸리지만, 그래도 한번 적용으로 두고두고 득(得)이 된다.
설정법은 아래와 같다.
# 바이너리 로그 설정
log-bin = bin_logs
# 쿼리 로그 설정
log = query_logs
# 에러 로그 설정
log-error = err_logs
# 느린 쿼리(slow query) 설정
log-slow-queries = slow_logs
# Update 쿼리 설정
log-update = update_logs
MySQL 쿼리로 시리얼라이즈된 필드값 가져오기 (0) | 2015.10.14 |
---|---|
웹 표준 코딩 관련 참고 링크 모음 (0) | 2015.05.19 |
오라클 시퀀스(Oracle Sequence) 사용 (0) | 2015.02.02 |
Oracle쿼리문을 MySQL쿼리로 변환 방법 (0) | 2015.02.02 |
자바 성능 향상 (Java String) (0) | 2014.08.27 |