장애에 대비하여 데이터베이스를 복제하고 보관하는 작업을 백업 Backup
이라고 부릅니다. 그리고 장애가 발생하여 데이터베이스에 손상이 발생했을 때 백업된 데이터를 기반으로 원래대로 돌리는 작업을 복원 Recovery
라고 부릅니다.
백업
의 방식에는 전체 백업, 차등 백업, 증분 백업
으로 나뉩니다.
전체 백업
데이터베이스의 엔티티, 테이블, 데이터 등 전체를 백업하는 것을 전체 백업
이라고 합니다. 데이터베이스 내의 전체 데이터를 백업하기 때문에 중복 저장이 될 수도 있고, 데이터 양이 많은 경우 백업에 시간이 오래걸립니다.
주로 데이터베이스의 최초 생성이나 데이터베이스에 변경사항이 생긴 경우에 전체 백업을 하기 알맞습니다.
DB에 1이라는 데이터를 넣고 전체 백업을 한 뒤, 2를 넣고 전체 백업을 하면 1, 2라는 데이터가 백업 파일에 저장되게 됩니다. 이 과정에서 1이라는 데이터가 중복으로 두 백업 파일에 저장되어있게 됩니다.
차등 백업
전체 백업을 수행한 이후 변경된 데이터만 저장하는 것이 차등 백업
입니다. 차등 백업
은 전체 백업으로 데이터베이스의 사본을 만들고 사본과 차이가 발생한 부분에 대해서만 백업을 진행합니다.
증분 백업
증분 백업
은 수행된 작업을 기록한 트랜잭션 로그 파일을 백업저장하는 방식입니다. 로그만 저장하기 때문에 백업 작업 속도가 빠르지만 복구에는 많은 시간이 소요됩니다.
MySQL
에서는 백업 방식을 물리적 백업, 논리적 백업
으로 나누기도 합니다. 나눈 물리/논리적 백업 내에서 전체, 차등, 증분 백업을 상황에 맞게 적용하여 백업을 수행합니다.
물리적 백업
은 데이터베이스를 사용하기 위해 필요한 모든 파일과 데이터들을 물리적으로 복사하는 방식입니다. 실제 DBMS의 파일들을 복사하기 때문에 DBMS의 버전이나 운영체제 등이 변경되면 복구에 어려움이 발생할 수 있습니다.
물리적 백업
은 백업 시점에 따라 콜드 백업
과 핫 백업
으로 나누어집니다.
콜드 백업
콜드 백업
은 데이터베이스를 중지(shutdown)한 후에 백업을 수행하는 방식입니다. 데이터베이스가 중지된 상황에서는 더 이상 변경사항이 발생하지 않기 때문에 중지된 시점에 전체 데이터베이스 파일을 복사하게 됩니다.
데이터베이스를 중지해야하는 방식이기 때문에 24시간 가동하는 서비스에서는 부적합합니다.
핫 백업
핫 백업
은 데이터베이스가 운영 중인 상태에서 백업을 수행하는 방식입니다. 데이터베이스가 서비스 되고있는 상황에서 수행되기 때문에 이용자가 적은 시간대에 수행해야합니다.
논리적 백업
은 데이터베이스의 내용을 별도 파일로 옮겨서 백업하는 방식입니다. 논리적 백업은 유틸리티 프로그램을 이용해서 전체 백업을 하거나 특정 사용자, 테이블 등 개별로 진행할 수 있습니다.
논리적 백업
은 스크립트와 같은 형태로 백업하기 때문에 DBMS의 버전이나 운영체제 등의 환경에 영향을 받지 않습니다.