DB 백업의 종류

DB 백업에는 3가지 백업 방식이 있는데 대표적으로 완전백업, 차등백업, 로그백업 총 세 가지가 있다.



1) Full Backup

하나부터 열까지 모든 것을 백업하는 방식이다. mdf 파일에 들어있는 모든 데이터를 백업을 받는다.

그런데 풀 백업이 이루어지는 동안에도 트랜잭션이 계속 진행되기 때문에 실제로는 아직 Commit되지 않은 작업이 백업 시 포함될 수 있다. 나중에 이 백업을 Restore 했을 때 Commit되지 않은 데이터가 들어있다면 데이터가 이상해 질 것이다. 그래서 실제로 풀 백업을 받을 때는 현재 진행중인 트랜잭션에 대한 트랜잭션 로그도 함께 백업된다.

풀 백업이 중요한 것은, 풀 백업이 보관되어 있지 않다면 Differential Backup이나 트랜잭션 로그 백업을 아무리 열심히 받았어도 아무 소용이 없기 때문이다.


2) Differential Backup (차등 백업 or 차분 백업)

이건 OS 백업 받을 때의 Differential Backup과 유사하다. "가장 마지막에 Full Backup 받은 이후의 변경 부분에 대한 백업"이다. 마지막에 받은 Differential Backup 이후의 변경사항을 백업 받는 것이 아니다. (SQL Server에는 Incremental Backup이란 개념이 없다.) 만약 10월 1일에 풀 백업을 받은 후 10월 5일, 10일 15일에 Differential 백업을 받았다면 DB를 15일자로 되돌리기 위해서는 10월 1일 풀 백업을 Restore한 후 15일자Differential 백업을 Restore하면 된다. (Intremental Backup과 달리 5일, 10일, 15일자를 모두 Restore할 필요가 없다.)


3) Transaction Log Backup (로그 백업)

트랜잭션 로그 백업에 대해 이해하려면 먼저 트랜잭션 로그란 놈에 대해서 알아보자

트랜잭션 로그란 SQL Server에서 실행되는 모든 SQL문을 기록한 로그이다. 어느 세션이 어떤 SQL을 실행했는지가 순차적으로 기록된다. 우리가 트랜잭션을 Rollback 시켰을 때 Begin Tran 시점 이전으로 되돌릴 수 있는 것은 트랜잭션을 시작한 이후의 모든 작업내용이 트랜잭션 로그에 기록되어 있기 때문이다 


로그 백업은 위의 데이터 백업과는 다른 몇 가지 특성이 있다.


① 일단 백업된 트랜잭션 로그는 자동으로 삭제된다. 이때 ldf파일 사이즈가 줄어들지는 않지만 ldf 내에서 로그가 삭제되기 때문에 해당 ldf 파일에는 새로운 로그를 기록할 수 있는 빈 공간이 확보된다. 따라서, 주기적으로 트랜잭션 로그를 백업 받으면, 별도로 로그를 삭제하지 않더라도ldf 파일이 계속 커지는 것을 방지할 수 있다.


② 트랜잭션 로그는 가지고 있는 최신 풀 백업 혹은 풀 백업 + DifferentialBackup 세트로부터 복원을 원하는 시점까지의 모든 백업 본이 존재하지 않으면 아무 의미가 없다. 백업 받은 로그 중 한 세트라도 분실하면 소용 없다는 의미다.  물론 풀 백업을 한번도 받은 적이 없다면 트랜잭션 로그는 소용없다.


③ 트랜잭션 로그가 온전하다면 Fault가 발생한 Database를 Fault 발생 직전의 시점으로 복원할 수 있다. 또한, 특정 시점으로의 Rollback 등 미세한 복원이 가능하다.

+ Recent posts