Zmanda 복구 관리자로 MySQL 테이블 복구
MySQL에서 중요한 테이블을 삭제하는 사고가 일어나면, 그에 해당하는 어플리케이션은 더이상 작동하지 않는다. 이러한 문제를 해결하가 위해서 Zmanda Recovery Manager를 사용한다.
MySQL 데이터베이스 관리자라면, 정기적으로 데이터베이스를 백업해야 한다. 누군가 MySQL에서 중요한 테이블을 삭제하면, MySQL을 이용하는 어플리케이션은 더 이상 작동하지 않는다. 이러한 상황에서 복구할 수 있는 방법은 무엇인가?
이에 대한 답변은 MySQL binary log다. Binary log는 데이터베이스 퍼포먼스에 최소한의 영향을 끼치면서 데이터베이스의 모든 수정사항을 기록한다. MySQL의 binay log는 서버에서 일어난다. MySQL 명령인 mysqlbinlog를 사용하여 binary log로부터 복구할 수 있다.
좀더 종합적인 해결책으로는 MySQL을 위한 Zmanda Recovery Manager를 사용하는 것이다. mysql-zrm 툴은 binary log를 검색할 수 있게 하고, 증분 백업(incremental backup)에서 선택하여 restore할 수 있게 한다.
# mysql-zrm --action parse-binlogs --source-directory=/var/lib/mysql/sugarcrm/20060915101613 Log filename | Log Position | Timestamp | Event Type | Event /var/lib/mysql/my-bin.000015 | 11013 | 06-09-12 06:20:03 | Xid = 4413 | COMMIT; /var/lib/mysql/my-bin.000015 | 11159 | 06-09-12 06:20:03 | Query | DROP TABLE IF EXISTS `accounts`;
여기서 SugarCRM 데이터베이스의 증분백업으로부터 사용자 테이블을 삭제하지 않고 선택적으로 복구하도록 하겠다. 2006년 9월 15일에 일어난 증분백업으로부터 log 위치 11159의 DROP TABLE 이벤트를 제외하고 데이터베이스를 복구하기 위해 두 개의 복구 명령을 수행한다.
--source-directory=/var/lib/mysql/ sugarcrm/20060915101613/ \
--stop-position 11014
# mysql-zrm --action restore --backup-set sugarcrm \
--source-directory=/var/lib/mysql/ sugarcrm/20060915101613/ \
--start-position 11160
보다 자세한 정보를 위해서는 다음 사이트를 참고한다.
Zmanda Recovery Manager
'웹 개발' 카테고리의 다른 글
MySQL 5.1이 릴리즈되었습니다. (0) | 2008.12.09 |
---|---|
저명한 인터넷 리더와 함께 웹 기술 동향 및 미래를 만나 보십시오! (0) | 2008.06.04 |
CakePHP의 설정 클래스 (0) | 2008.05.15 |
CakePHP에서 데이터베이스 설정 (0) | 2008.05.15 |
CakePHP의 설치 (0) | 2008.05.15 |