아카이빙(archiving)과 백업(backup)

아카이빙

특정 테이블의 데이터가 지나치게 많을 경우 전체 성능이 저하될수 있는데, 이중 많이 사용되지 않는 row들을 저렴한 비용으로 저사양의 장비를 준비해서 옮겨두는 식으로 해결하는 작업을 아카이빙(Archiving) 이라고 한다. 그리고 아카이빙된 데이터 중에서 다시 사용량이 늘어서 활성화 되는 항목을 원래의 시스템으로 다시 가져오는 작업을 언아카이빙(UnArchiving)이라고 한다.

예를들어서 항목이 10억건 정도 되는 회원정보 가 있다고 할때, 이중 5천만건 정도가 현재 활성화 되어있는 상태라고 하면, 9억5천만건의 데이터를 다른 장비로 옮겨놓고 5천만건의 데이터들만 실제 시스템에 남겨두는 것을 의미한다.

아카이빙된 데이터는 백업과 달리 다른 시스템에서 접근이 가능하도록 구축해두어야 한다.

백업

이와는 다르게 백업이란 미래의 어느 시점에 과거의 데이터 상태로 돌리기 위해 현재의 데이터들을 보관하는 것 이라고 볼수 있다. 쉽게 말하면 장애가 일어날 경우를 대비해서 지금의 데이터들을 저장하는 것이다. 그리고 실제 장애가 발생하면 저장한 데이터를 사용해서 그 시점의 데이터로 복구를 시킬수 있다.

백업은 dump 라고도 하는데, mysql에서 테이블들을 덤프하기 위해서는 쉘에서 아래를 입력하면 된다. 테이블명2 이후부터는 옵션이다.

mysqldump -h[호스트명] -u[계정명] -p [DB명] [테이블명1] [[테이블명2] ...] > [파일명]

이 파일을 사용해서 복구를 하기 위해서는 아래와 같이 입력하면 된다.

mysql -h[호스트명] -u[계정명] -p [DB명] < [파일명]

복구를 할 경우, 일반적으로 아무런 옵션을 주지 않았을 경우에는 테이블을 drop 한후 다시 create를 하기 때문에 (그런 계정이 많지는 않겠지만) drop 권한만 있고 create 권한은 없는 계정으로 시도하였을 경우에는 멀쩡한 테이블만 없어져 버린다는 것에 주의하자.