SQL Server에서의 백업 종류 3가지를 알기 전에,
먼저 MSSQL에서 데이터가 어떤 식으로 저장되는지부터 알아야 할 필요가 있다.

 

MSSQSL은 3가지의 파일형식으로 데이터를 저장한다. 각각 MDF, NDF, LDF 라는 파일 형식으로 데이터가 저장되는데, 이렇게 다른 파일 형식으로 저장되는 이유는, DB가 형성될 때에 데이터 파일과 로그 파일을 서로 같은 파일로 섞이지 않게 하기 위함이다.

이를 위해 MSSQL에서는 다음과 같이 3가지 타입의 파일로 나뉜다.

 

MSSQL 3가지 파일 타입

- Primary Data files

Primary Data file은 DB의 시작점이며, DB의 다른 파일을 가리키고 있다. 실제 데이터들이 저장되는 파일이다.
모든 DB는 Primary Data file을 가지고 있다.

보통 .mdf 확장자를 가진다.

 

- Secondary Data files

Secondary Data files은 primary Data file 이외의 데이터 파일로 구성된다. Secondary Data file이 아예 존재하지 않는 DB도 있을 수 있으며, 여러 개 있는 DB도 존재할 수 있다.

보통 .ndf 확장자를 가진다.

 

 * "Secondary Data Files는 왜 존재하지?!"
=> Data file에 데이터를 저장할 때, 파일 그룹을 나눠 저장하면 하나의 파일그룹을 사용할 때보다 이점이 있다.

ex) 어떤 DB에 테이블이 10개 있는데, 이 중 3개의 테이블을 가장 많이 사용하고, 나머지 7개의 테이블은 거의 사용하지 않는다고 하자. 

 이때 데이터베이스를 파일 그룹으로 생성하고, 많이 사용하는 3개의 테이블을 Primary Data File 그룹에 생성해 두고, 나머지 7개의 테이블은 Secondary Data File 그룹에 생성한다.

 이후 Primary Data File 그룹과 Secondary Data File 그룹을 물리적인 디스크에서 각각 분리하여 관리하면, DB 서버의 성능을 높일 수 있다!

 

- Log files

Log file은 DB를 복구하는 데 사용되는 로그 정보가 포함되어 있다. DB는 적어도 하나 이상의 로그 데이터가 있어야 한다.

보통 .ldf 확장자를 가진다.


본론으로 넘어와서, SQL Server의 백업 종류 3가지에 대하여 알아보자.

 

MSSQL 3가지 백업 종류

  1. Full Backup
    - Full Backup은 말 그대로 전체 백업이다.
    - .mdf 파일에 들어있는 모든 데이터를 백업
    - Full Backup이 이루어지는 동안에도 트랜잭션이 계속 진행될 수 있는데,
       이때 커밋된 트랜잭션에 대한 로그들도 모두 함께 백업된다.
    - SQL 구문)
    BACKUP DATABASE (DB 이름) TO disk = '(원하는 경로).bak';
    ex) BACKUP DATABASE BikeStore TO disk = 'C:\Junho\Backup\BikeStore 백업.bak';

  2. Differential Backup (차등 백업)
    - 가장 마지막에 Full Backup 을 수행한 시점을 기준으로, 이후 변경된 모든 부분에 대한 백업
    - 백업 본을 활용한 복구(Restore)시, Full Bakcup본 + Differential Backup본을 모두 백업 소스 파일로 추가 해야 정상 복구가 진행됨.
    - SQL Server에는 Incremental Backup (증분 백업)* 이란 개념이 없어,
      마지막에 받은 Differential Backup 이후의 변경사항에 대한 백업은 존재하지 않는다.
    - SQL 구문)
    BACKUP DATABASE (DB이름) TO disk = '(원하는 경로)' WITH DIFFERENTIAL;

    Differential Backup(차등 백업) 도식화

    * Incremental Backup (증분 백업) : 마지막 백업(어떠한 백업인지 관계없이) 이후 변경된 데이터에 대해서만 백업하는 방식.
    Incremental Backup(증분 백업) 도식화


  3. Transaction Log Backup (로그 백업)
    - Transaction Log(트랜잭션 로그) : SQL Server에서 실행되는 모든 SQL문을 기록.
                                                  어느 세션이 어떤 SQL을 실행했는 지에 대해 순차적으로 기록됨.
    - 일단 백업된 트랜잭션 로그는 자동으로 삭제됨. 이때 .ldf 파일 사이즈가 줄어들지는 않지만, .ldf 파일 내에서 백업된 트랜잭션 로그가 사라지기 때문에 새로운 로그를 기록할 수 있는 빈공간이 확보됨.
     => 주기적인 트랜잭션 로그 백업을 통해, 별도로 로그를 삭제하지 않고도 .ldf 파일 사이즈가 계속 커지는 것을 방지할 수 있음.
    - 트랜잭션 로그는 복원을 원하는 시점까지의 모든 백업본(Full 백업 + Differential 백업)이 존재하지 않으면 아무 의미가 없다!
    - 트랜잭션 로그 백업을 하고자 하는 DB의 복구 모델이 'FULL' 또는 'BULK_LOGGED' 일때만 사용 가능하다.
    - 트랜잭션 로그가 온전하다면, Fault가 발생한 DB를 Fault 발생 직전의 시점으로 복원 가능하다.
      => 특정 시점으로의 Rollback미세한 복원이 가능하다는 말이다!
    - SQL 구문)
    BACKUP LOG (DB 이름) TO disk = '(원하는 경로)';

 

 

참고자료

https://itmemo.tistory.com/74

 

MDF, NDF, LDF 파일은 무엇인가?

MDF, NDF, LDF 각 파일은 물리 데이터베이스 파일과 파일그룹을 의미한다. 데이터 파일과 로그파일은 서로 같은 파일로 섞이지 않고 데이터베이스에 의해서 개별적으로 보관된다. MSSQL에서 관리

itmemo.tistory.com

https://m.blog.naver.com/ohmydata00/221197539437

 

MS-SQL Backup에 관하여

MS-SQL 데이터베이스는 DB의 데이터들을 두 가지 형태로 저장합니다. 하나는 실제 데이터들이 저장...

blog.naver.com

https://hackersstudy.tistory.com/60

 

[ MSSQL ] 데이터 파일(.mdf/.ndf)과 로그파일(.ldf)

.MDF, .NDF, .LDF 파일은 데이터베이스의 데이터파일과 로그파일을 의미한다. 데이터파일과 로그파일은 데이터베이스의 의해 개별적으로 관리된다. MSSQL에서 관리되는 파일은 다음과 같이 3가지 타

hackersstudy.tistory.com

https://12bme.tistory.com/443

 

[개발용어] 전체백업 / 증분백업 / 차등 백업

백업: 원본이 손상되거나 잃어버릴 경우를 대비하여 원본 자료를 미리 복사하는 과정. 증분 백업은 선택된 폴더의 전체 백업 이후, 변경되거나 추가된 데이터만 선택적으로 백업하는 방식이다.

12bme.tistory.com

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기