오전에 작업을 하다보니 정신이 없어서인지 테이블을 날려 먹었습니다.

그래서 복구를 하려고 보니 mysql에 쌓이는 쿼리 로그를 통해서 복구하는 방법이 있어서 해봤습니다.

(각 디렉토리 경로는 설치환경에 따라 다를 수 있습니다. 붉은색으로 표시한 부분들을 환경에 따라 맞춰서 사용하시면 됩니다.)

# cd /var/lib/mysql (mysql 데이터가 쌓이는 경로로 이동합니다.)


mysql 데이터가 쌓이는 경로에 들어가면 xxxxxxx-bin.000001과 같은 형식으로 쌓여있는 파일들이 있을건데 이 파일들에 쿼리 로그가 남아있습니다.

하지만 바로 열어서 볼 수 없는 바이너리 들이라서 mysqlbinlog 를 이용해야 합니다.


# mysqlbinlog mysql-bin.000001 > query.sql


위와 같이 mysqlbinlog를 이용해서 mysql-bin.000001 이라는 바이너리를 query.sql 로 뽑아내었습니다.

vi를 이용해서 열어보면 쿼리가 나타나겠죠. 하지만 쿼리양이 많다보니 필요한 테이블에 대한 정보만 뽑아봤습니다.


# grep "TB_TEST" query.sql > table.sql


TB_TEST 테이블에 대한 쿼리들만 table.sql 에 저장되게 됩니다.

마지막으로 table.sql을 열어서 필요한 쿼리들을 뽑아낸 후에 그 쿼리를 실행해서 테이블을 복구하면 됩니다.











YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST
  1. 봉봉 2015.08.12 10:17 신고  댓글주소  수정/삭제  댓글쓰기

    안녕하세요. 감사히 잘 보았습니다.
    질문드릴것이 있어서 댓글을 달게되었습니다.

    1. mysqlbinlog 에 verbose 옵션 없이 sql 파일로 생성시 실행된 dml이 binlog형식으로 표시되어 쿼리 확인이 어렵습니다.
    별도의 방법이 있는지 알고 싶습니다.
    2. verbose 옵션 부여하면 쿼리 확인이 가능하나 기재해주신 grep 옵션으로는 실행된 쿼리 확인이 불가능합니다.
    어떻게 복구를 한다는것인지 알고싶습니다.

    감사합니다.