반응형
DBA에 가장 중요한 작업 중인 하나인 전체 백업 및 복원 방법에 관해서 설명하려고 합니다.
MSSQL Database 전체 백업 개념
- 전체 데이터베이스 백업은 백업 시점의 로그 파일까지 포함한 모든 데이터베이스 백업을 의미합니다.
- 전체 데이터베이스 백업은 백업 완료 시점의 데이터베이스를 나타냅니다.
- 즉, 백업 시작 시각이 아니라 백업 완료되는 시간의 Data까지 백업됩니다.
- 데이터베이스 크기가 증가함에 따라 전체 데이터베이스 백업을 완료하는 데 점점 긴 시간이 걸리고 더 많은 저장소 공간이 필요해 비용이 증가합니다.
- 대안으로 대규모 데이터베이스의 경우 일련의 차등 백업으로 전체 데이터베이스 백업을 보완 합니다.
- 전체 백업은 단순 복구 모델 하고 전체 복구 모델 나눠서 생각할 수 있습니다.
MSSQL Database 전체 백업 및 복원
단순 복구 모델에서 데이터베이스 백업.
- 단순 복구 모델에서는 전체 백업 잠재적으로 손실이 발생할 수 있습니다.
- 예를 들면 전체 백업 후 시간이 지난 후 장애가 발생하면 전체 백업 이후 자료는 복원할 수 없습니다.
- 복구 모델에 대한 설명을 참조하세요. https://aurumguide.tistory.com/96
- WITH FORMAT을 사용하여 기존 백업 파일을 덮어쓰고 전체 데이터베이스 백업을 만드는 방법입니다.
-- FULL BACKUP
BACKUP DATABASE aurumGuideDB
TO DISK = 'C:\aurumGuideBackup\aurumGuideSimpleBackup.bak'
WITH FORMAT,
MEDIANAME = 'aurumGuide SQLServerBackups',
NAME = 'Full Backup of aurumGuide';
GO
전체 복구 모델에서 데이터베이스 백업.
- 전체 및 대량 로그 복구를 사용하는 데이터베이스의 경우 데이터베이스 백업이 필요하지만 충분하지 않습니다.
- 트랜잭션 로그 백업도 필요합니다. 다음 그림에서는 전체 복구 모델에서 사용할 수 있는 가장 단순한 백업 전략을 보여 줍니다.
- 기존 백업을 덮어쓰고 새 미디어 세트를 만드는 데 WITH FORMAT을 사용하여 전체 데이터베이스 백업을 만드는 방법을 보여 줍니다.
- 그런 다음, 이 예제에서는 트랜잭션 로그를 백업합니다.
USE master;
GO
ALTER DATABASE aurumGuideDB SET RECOVERY FULL;
GO
BACKUP DATABASE aurumGuideDB
TO DISK = 'C:\aurumGuideBackup\aurumGuideFullBackup.bak'
WITH FORMAT,
MEDIANAME = 'aurumGuide SQLServerBackups',
NAME = 'Full Backup of aurumGuide';
GO
--Create a routine log backup (backup set 2).
BACKUP LOG aurumGuideDB TO DISK = 'C:\aurumGuideBackup\aurumGuideFullBackupLog.bak' WITH FORMAT;
GO
전체 데이터베이스 백업을 사용하여 데이터베이스 복원
- 백업이 완료된 시점까지 데이터베이스를 복구할 수 있도록 트랜잭션 로그가 백업에 포함됩니다.
- 복원된 데이터베이스는 commit 되지 않은 트랜잭션을 제외하면 데이터베이스 백업이 완료된 당시의 원래 데이터베이스 상태와 일치합니다.
- 전체 복구 모델에는 차례로 후속 트랜잭션 로그 백업을 복원해야 합니다.
- commit 않은 트랜잭션은 데이터베이스가 복원될 때 롤백 됩니다.
-- start RESTORE
RESTORE DATABASE aurumGuideDB
FROM DISK = N'C:\aurumGuideBackup\aurumGuideFullBackup.bak' WITH NoRECOVERY;
;
GO
RESTORE DATABASE aurumGuideDB
FROM DISK = N'C:\aurumGuideBackup\aurumGuideFullBackupLog.bak' WITH RECOVERY;
;
GO
반응형