'실수로 DB를 삭제한 경우'에 해당되는 글 1건

728x90

phpMyAdmin 에서 특정한 테이블만 삭제한다는 것을 실수로 DB 전체를 날려버렸다.

정신이 아득하다. 검색해서 실수로 날린 DB 복구방법으로 시도를 했는데 안된다.

아~~ 미처버리겠다는 생각이 들었고 나온 방법으로 수동 비슷하게도 복구를 시도해봤다.

그런데 문제는 PHP 소스코드 구현 방식에 약간 문제있는 부분이 있다는 걸 알게되었고, 이 방법으로는 정상적인 복구가 안된다.


최종적으로 복구를 한 방법을 적어둔다.


# cd /usr/local/mysql/data

에 가면 방금 삭제한 로그를 기록한 파일이 있다.

시간대를 보면 확인할 수 있다.

해당 파일을 보니 mysql-bin.000003 로 되어 있다.


복구방법에 보니까 이걸 한줄 한줄 실행해서 파일 하나로 합치라는 명령어가 있다.

그런데 이건 잘못된 듯하다.


/usr/local/mysql/bin/mysqlbinlog -d testdb mysql-bin.000003 > resque.sql

를 실행한다.

여기서 testdb 대신 실제 사용하는 DB명으로 수정해야 한다.

이렇게 하면 복구를 위한 1단계 준비는 되었다.


※ grep "insert" resque.sql > resque1.sql 이런거 하라고 되어 있는 곳도 있던데 이런거 하면 약간의 명령어는 나온다. 하지만 100% 복구 방법이 절대 아니다. 이거 해본다고 시간만 낭비했다.


2단계로 이 파일을 PC로 백업한다.

  mysql-bin.000003 파일도 PC로 복사를 해두는 편이 좋다고 생각하면 복사를 하라.

  테스트를 거치다보니 동일한 파일에 시간대가 달라지면서 계속해서 작업한 내용이 쌓이더라.


3단계로 이 파일을 EditPlus 로 열어서 맨 하단에 보면 drop table 이라고 표시된 부분이 보일 것이다.

  이 부분을 삭제 또는 주석처리 해주어야 한다.

  그런 다음에 저장하고 이 파일(rescue.sql )을 다른 이름으로 변경(rescue_modify.sql )하여 다시 서버에 복사를 한다.


4단계

# mysql -u 계정아이디 -p DB이름 < rescue_modify.sql
를 해주고 나면 패스워드 입력하고 나면 복구가 된다.


이렇게 복구하면 혹시라도 다시 만든 테이블이 있다면 삭제되어 버린다.

즉, 복구한 명령어를 가진 파일로 업데이트를 해버린다는 말이다.

'리눅스' 카테고리의 다른 글

sftp 파일 전송 shell script  (0) 2017.03.09
리눅스 파일/디렉토리 구조  (0) 2017.03.09
리눅스 날짜시간 변경  (0) 2016.10.24
2개의 APM(Apach + PHP + MySQL) 소스 설치  (0) 2016.07.17
SSH chroot 설정방법  (0) 2016.07.04
블로그 이미지

Link2Me

,