본문 바로가기
APM

mysql binary log를 이용한 복구

by 누피짱 2014. 5. 9.

DB작업전 반드시 data를 백업 후 작업을 진행하자.

# cp -arp /usr/local/mysql/data /usr/local/mysql/data_bak_100406

 

mysql data 폴더를 보면

mysql-bin.000001

mysql-bin.000002

mysql-bin.000003

mysql-bin.000004, ...... 등의 파일이 있다.

 

mysql 을 설치하고 부터 실행하는 모든 명령어들(create, update, delete, alter 등) 이 기록에 남는데

이러한 기록을 이용하여 현재까지의 DB를 재작성 할 수 있다.


문제발생 시간을 확인하여 그 전 시간까지만 복구를 하면 된다.

 

1. mysql 바이너리 로그 파일 확보 

# mkdir /usr/local/src/mysql_bin_repair

# cp -arp /usr/local/mysql/data/mysql-bin.0* /usr/local/src/mysql_bin_repair

# cd /usr/local/src/mysql_bin_repair

 

2. mysql 쿼리문 추출

# /usr/local/mysql/bin/mysqlbinlog -d neulwon -s mysql-bin.000001 > mysql-bin.000001.sql

# /usr/local/mysql/bin/mysqlbinlog -d neulwon -s mysql-bin.000002 > mysql-bin.000002.sql

# /usr/local/mysql/bin/mysqlbinlog -d neulwon -s mysql-bin.000003 > mysql-bin.000003.sql

# /usr/local/mysql/bin/mysqlbinlog -d neulwon -s mysql-bin.000004 > mysql-bin.000004.sql

 

[옵션 설명]

-d DB명 : 바이너리 로그파일에서 해당 DB에 관한 쿼리만 추출

-s : 주석처리된 내용은 추출대상에서 제외합니다.

 

3. DB 삭제 및 복구

위와같이 문제발생 시간 전까지의 모든 바이너리 로그를 새로운 파일로 생성

생성된 *.sql 파일을 vi 로 열어보면 create database 에서부터 지금까지의 쿼리문이 기록되어 있다.

 

# mysql -p

Enter password: (mysql root 패스워드 입력)

기존에 복구하고자 하는 DB가 있을 경우 복구가 되지 않으니 해당 DB를 삭제. ( 미리 백업을 다시 해두는것이 안전)

 

mysql> drop database Test;

 

이제 아래와 같이 쿼리추출파일을 실행하여 data를 생성한다.

 

mysql> \. mysql-bin.000001.sql

mysql> \. mysql-bin.000002.sql

mysql> \. mysql-bin.000003.sql

mysql> \. mysql-bin.000004.sql

 

작업이 완료되면, select 명령어를 이용하여 해당 DB에 데이타가 정상 입력되었는지 확인.

'APM' 카테고리의 다른 글

UNION과 UNION ALL 의 차이 및 주의 사항  (0) 2014.05.22
MYSQL binary log 관리하기  (0) 2014.05.09
해킹방지를 위한 fail2ban 설치  (0) 2014.05.09
MySQL 암호화 방법  (0) 2013.06.12
SSD를 쓰면 DBMS가 빨라질까?  (0) 2012.11.03

댓글