SQL Server/SQL Server 이중화_백업

[MsSQL] 데이터베이스 전체 복구, 차등 복구, 로그 복구 알아보기

꽁담 2019. 3. 20. 20:46

MSSQL 은 전체 복원, 차등 복원, 로그 복원을 지원합니다.



전체 복원과 차등 복원은 같은 구문을 사용합니다.

구문은 다음과 같습니다.

RESTORE DATABASE AdventureWorks FROM DISK = 'C:\백업폴더\advbackup.bak';


로그 복원 문법은 다음과 같습니다.

RESTORE LOG AdventureWorks FROM DISK = 'C:\백업폴더\advbackup_log.bak';



복원이 완료되면 다른 사용자는 바로 데이터베이스에 접근할 수 있습니다.

하지만 전체 백업과 로그백업을 병행한 경우에는, 전체 복원을 한 후에 로그 복원을 해야 합니다.

전체 복원만 한 상태에서 사용자가 데이터베이스에 접근한다면 아직 로그 복원되지 않은 불완전한 데이터베이스에 접근하는 것이기 때문엡니다.


전체 복원을 하고 아직 복원이 완료된 것이 아니라는 표시를 함으로써 사용자가 접근불가 설정

이 때 사용하는 옵션은 WITH NORECOVERY 입니다.

RESTORE DATABASE AdventureWorks FROM DISK = 'C:\백업폴더\advbackup.bak' WITH NORECOVERY;

RESTORE LOG AdventureWorks FROM DISK = 'C:\백업폴더\advbackup_log.bak'

NORECOVERY 옵션을 사용하였을 경우에는 WITH RECOVERY 구문을 한번 더 사용하여 복원 중 상태를 종료하여야 합니다.

RESTORE DATABASE AdventureWorks WITH RECOVERY;



전체 복원 후 데이터가 정상인지 확인하기 위해 db_owner, sysadmin 권한을 가진 사용자만 접근하게 하는 방법

RESTORE DATABASE AdventureWorks FROM DISK = 'C:\백업폴더\advbackup.bak' WITH RESTRICTED_USER;

RESTORE LOG AdventureWorks FROM DISK = 'C:\백업폴더\advbackup_log.bak'


복원 시 데이터/로그 파일의 경로를 설정

RESTORE DATABASE AdventureWorks FROM DISK = 'C:\백업폴더\advbackup.bak'

               WITH MOVE 'AdventureWorks_data' TO 'D:\Data\adv.mdf'

       ,MOVE 'AdventureWorks_log' TO 'D:\Data\adv.ldf';


원래 파일이 있는 경우 덮어쓰는 방법

RESTORE DATABASE AdventureWorks FROM DISK = 'C:\백업폴더\advbackup.bak' WITH REPLACE;




백업에 관련된 포스팅은 아래 url 을 참고해 주세요.

https://mozi.tistory.com/294