featur

[MSSQL] 전체 데이터베이스 백업 (Full Database Backups) 본문

개발/MSSQL

[MSSQL] 전체 데이터베이스 백업 (Full Database Backups)

featur 2016. 12. 21. 09:57



[MSSQL] 전체 데이터베이스 백업 (Full Database Backups)




전체 데이터베이스 백업은 전체 데이터베이스를 백업합니다. 이 백업은 전체 데이터베이스 백업이 복원된 후 전체 데이터베이스가 복구될 수 있도록 트랜잭션 로그의 일부를 포함합니다. 전체 데이터베이스 백업은 백업 완료 시점의 데이터베이스를 나타냅니다.



단순 복구 모델에서는 각 백업 후 재해가 발생할 경우 데이터베이스가 잠재적 작업 손실 위험에 노출될 수 있습니다. 다음 백업이 시작되어 작업 손실 가능성이 다시 0이 되고 새 작업 손실 가능성 주기가 시작될 때까지 작업 손실 가능성은 업데이트를 수행할 때마다 커집니다. 시간의 경과에 따라 백업 사이의 작업 손실 가능성이 증가합니다. 다음 그림에서는 전체 데이터베이스 백업만 사용하는 백업 전략의 작업 손실 가능성을 보여 줍니다.


데이터베이스 백업 간의 작업 손실 가능성 표시


예(Transact-SQL)

다음 예에서는 기존 백업을 덮어쓰고 새 미디어 세트를 만들기 위해 WITH FORMAT을 사용하여 전체 데이터베이스 백업을 만드는 방법을 보여 줍니다.

-- Back up the AdventureWorks2012 database to new media set.  
BACKUP DATABASE AdventureWorks2012  
    TO DISK = 'Z:\SQLServerBackups\AdventureWorksSimpleRM.bak'   
    WITH FORMAT;  
GO  

전체 및 대량 로그 복구를 사용하는 데이터베이스의 경우 데이터베이스 백업이 필요하지만 이것만으로 충분하지는 않습니다. 또한 트랜잭션 로그 백업이 필요합니다. 다음 그림에서는 전체 복구 모델에서 사용 가능한 가장 단순한 백업 전략을 보여 줍니다.

일련의 전체 데이터베이스 백업 및 로그 백업

로그 백업을 만드는 방법은 트랜잭션 로그 백업(SQL Server)을 참조하세요.


예(Transact-SQL)

다음 예에서는 기존 백업을 덮어쓰고 새 미디어 세트를 만들기 위해 WITH FORMAT을 사용하여 전체 데이터베이스 백업을 만드는 방법을 보여 줍니다. 그런 다음 트랜잭션 로그를 백업합니다. 실제 상황에서는 일련의 정기적인 로그 백업을 수행해야 합니다. 이 예의 경우 AdventureWorks2012 예제 데이터베이스는 전체 복구 모델을 사용하도록 설정됩니다.

USE master;  
ALTER DATABASE AdventureWorks2012 SET RECOVERY FULL;  
GO  
-- Back up the AdventureWorks2012 database to new media set (backup set 1).  
BACKUP DATABASE AdventureWorks2012  
  TO DISK = 'Z:\SQLServerBackups\AdventureWorks2012FullRM.bak'   
  WITH FORMAT;  
GO  
--Create a routine log backup (backup set 2).  
BACKUP LOG AdventureWorks2012 TO DISK = 'Z:\SQLServerBackups\AdventureWorks2012FullRM.bak';  
GO  


전체 데이터베이스 백업에서 임의 위치로 데이터베이스를 복원하여 전체 데이터베이스를 한 번에 다시 만들 수 있습니다. 충분한 트랜잭션 로그가 백업에 포함되어 있으므로 백업 완료 시점에 데이터베이스를 복구할 수 있습니다. 복원된 데이터베이스는 커밋되지 않은 트랜잭션을 제외하면 데이터베이스 백업이 완료된 당시의 원래 데이터베이스 상태와 일치합니다. 전체 복구 모델에서는 모든 후속 트랜잭션 로그 백업을 복원해야 합니다. 데이터베이스가 복구되면 커밋되지 않은 트랜잭션이 롤백됩니다.



Comments