본문 바로가기
APM

백업(Backup) 없는 MySQL 테이블 복구하기

by 누피짱 2015. 3. 23.

백업은 기본인데, 가끔 뜻하지 않게 백업이 존재하는 않는 DB에서 작업하다가 실수를 할 때가 있다.

순간 등줄기에 땀 한방울이 흐르는 경험을 하게 될 때, 도움이 되었으면 한다.

우선 bin log가 존재를 해야 가능하다. bin log조차 없다면 깔끔하게 포기~~!!

흩어져 있는 로그를 하나로 묶어 줄 수 있는 Shell을 하나 짜보자. 


host]# vi help.sh

--------------------------------------------------------------------------------------

#!/bin/sh

mysqlbinlog -d DB명 mysql-bin.000001 > help.sql

mysqlbinlog -d DB명 mysql-bin.000002 >> help.sql

mysqlbinlog -d DB명 mysql-bin.000003 >> help.sql

mysqlbinlog -d DB명 mysql-bin.000004 >> help.sql

mysqlbinlog -d DB명 mysql-bin.000005 >> help.sql

mysqlbinlog -d DB명 mysql-bin.000006 >> help.sql

---------------------------------------------------------------------------------------

옵션 -d를 이용한 것은 여러 데이터베이스를 운영할 경우 하나의 데이터베이스만 축출하기 위해 사용됩니다.

마지막 문제가 있는 mysql-bin 로그는 따로 만들어야 합니다. (용량이 작으면 하나로 만들어도 괜찮아요.)

위 스크립트를 실행하면 help.sql 생성되었을 것이다.


이걸 임시 디비에 밀어 넣는다.

host]# mysql -f -uroot -p tmp_db < help.sql


문제의 쿼리가 있는 bin log는 별도로 만들어서 해당 쿼리를 삭제한 후에 tmp_db에 밀어 넣어주시면 됩니다.

그런 후에 문제가 되었던 테이블만 백업(mysqldump) 받으셔서 사용하시면 됩니다.

host]# mysqldump -uroot -p tmp_db > org_table.sql


식은 땀 닦고 담배 한개피 ... 휴~~~


댓글