반응형
** VM with SQL Server 2016 을 대상으로 함 **
1. 백업
- Azure 가 기본적으로 재공하는 확장 기능인 SqlIaaSExtension 을 사용
- 확장 기능의 설정은 SQL Server 구성에서 '자동화된 백업'을 사용하여 설정
- 설정 정보
위와 같이 설정하면 wsdjpedbbak 저장소계정의 BLOB 에 backupcontainer 라는 컨테이너가 생성된다.
설정 정보
- 보존기간 : 30일
- 저장소계정 : wsdjpedbbak
- 암호화 : 사용안함
- 백업 시스템 데이터베이스 : 사용안함
- 백업 일정 구성 : 수동
- 백업빈도 : 매일
- 전체백업 - 백업시작시간(로컬VM시간) : 03:00
- 전체백업 - 백업기간(시간) : 2 시간
- 로그백업 - 백업빈도(분) : 10 분
- 저장소계정에 백업된 DB, LOG 파일 (portal 에서 확인 또는 Azure Storage Explorer 를 사용하여 저장소 확인 가능)
2.복구
Azure Storage Account 의 Blob 에 저장된 bak, log 파일을 사용하여 복원을 시도할 수 있다.
복원하려는 시점에서 VM 에 기존 DB 가 있는 경우와 DB 가 존재하지 않는 경우에 T-SQL 이 조금 다를 수 있다.
아래 예제를 확인하자
-- restore and recover to a point in time between the times of two transaction log backups, and then verify the row count ALTER DATABASE AdventureWorks2014 SET SINGLE_USER WITH ROLLBACK IMMEDIATE; RESTORE DATABASE AdventureWorks2014 FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/<firstbackupfile>.bak' WITH NORECOVERY,REPLACE; RESTORE LOG AdventureWorks2014 FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/<secondbackupfile>.bak' WITH RECOVERY, STOPAT = 'June 26, 2015 01:48 PM'; ALTER DATABASE AdventureWorks2014 set multi_user; -- get new count SELECT COUNT (*) FROM AdventureWorks2014.Production.Location ;
위의 T-SQL 은 마이크로소프트 사의 AdventureWorks2014 데이터베이스를 복원하는 명령어이다.
- 기존의 데이터베이스를 SINGLE_USER 모드로 전환
- 특정 시점의 전체 백업파일을 사용하여 데이터베이스 복원, WITH NORECOVERY(아직 복원이 마무리되지 않음), REPLACE(기존의 DB를 복원DB로 교체)
- 증분 백업된 로그 파일을 사용하여 추가 복원, WITH RECOVERY(복원 마무리), STOPAT(지정한 시점까지만 로그를 복원)
- 복원된 데이터베이스를 다시 MULTI_USER 모드로 전환
- 복원된 DB 상태를 확인
순으로 진행된다. 위의 경우는 기존 DB 가 아직 남아 있는 상태에서 복원을 시도하는 것으로 만약 wholedoc 을 대상으로 한다면 다음과 같은 T-SQL 을 구성할 수 있다.
ALTER DATABASE wholedoc SET SINGLE_USER WITH ROLLBACK IMMEDIATE; RESTORE DATABASE wholedoc FROM URL = 'https://wsdjpedbbak.blob.core.windows.net/backupcontainer/wholedoc_929834983489834_20170101030000.bak' WITH NORECOVERY, REPLACE; RESTORE LOG wholedoc FROM URL = 'https://wsdjpedbbak.blob.core.windows.net/backupcontainer/wholedoc_929834983489834_20170101031000.log' WITH NORECOVERY RESTORE LOG wholedoc FROM URL = 'https://wsdjpedbbak.blob.core.windows.net/backupcontainer/wholedoc_929834983489834_20170101032000.log' WITH RECOVERY, STOPAT = '2017-01-01 03:15:20.000'; ALTER DATABASE wholedoc SET MULTI_USER;
위의 명령어는 다음과 같다.
- wholedoc 데이터베이스를 SINGLE_USER 모드로 전환
- URL 의 전체 백업 파일을 사용하여 데이터베이스를 복원, WITH NORECOVERY(아직 복원이 마무리되지 않음), REPLACE(기존의 DB를 복원DB로 교체)
- URL 의 증분 로그 파일을 사용하여 데이터베이스 추가 복원, WITH NORECOVERY(아직 복원이 마무리되지 않음)
- URL 의 증분 로그 파일을 사용하여 데이터베이스 추가 복원, WITH RECOVERY(복원 마무리), STOPAT(지정한 시점까지만 로그를 복원)
- 복원된 데이터베이스를 다시 MULTI_USER 모드로 전환
이번에는 복원하는 시점에서 VM 에 기존의 DB 가 남아있지 않는 경우, 또는 VM을 다시 구성하여 기존의 데이터베이스가 없는 경우를 상정하여 복원을 시도하는 T-SQL 을 만들어보자.
- 최종 전체 백업 파일만 사용하여 복원하는 경우
RESTORE DATABASE wholedoc FROM DISK ='https://wsdjpedbbak.blob.core.windows.net/backupcontainer/wholedoc_47c31b8b9ddd48c7830b5a4cb74a923a_20170817030421+09.bak' WITH RECOVERY, MOVE 'smart_jt' TO 'F:\Data\wholedoc.MDF', MOVE 'smart_jt_log' TO 'G:\Log\wholedoc.LDF'; ALTER DATABASE wholedoc SET MULTI_USER;
위 명령어는 다음과 같다.
- 단일 전체 백업 파일을 사용하여 복원을 시도
- WITH RECOVERY (T-SQL 이 실행완료되는 경우 복원 완료)
- smart_jt 데이터베이스의 MDF 파일의 위치를 특정 위치로 지정
- smart_jt_log 로그의 LDF 파일의 위치를 특정 위치로 지정
- 데이터베이스를 MULTI_USER 모드로 전환
- 최종 전체 백업 파일과 증분 로그 파일을 사용하여 복원하는 경우
RESTORE DATABASE wholedoc FROM URL ='https://wsdjpedbbak.blob.core.windows.net/backupcontainer/wholedoc_47c31b8b9ddd48c7830b5a4cb74a923a_20170817030421+09.bak' WITH NORECOVERY, MOVE 'smart_jt' TO 'F:\Data\wholedoc.MDF', MOVE 'smart_jt_log' TO 'G:\Log\wholedoc.LDF'; RESTORE LOG wholedoc FROM URL = 'https://wsdjpedbbak.blob.core.windows.net/backupcontainer/wholedoc_929834983489834_20170101031000.log' WITH NORECOVERY RESTORE LOG wholedoc FROM URL = 'https://wsdjpedbbak.blob.core.windows.net/backupcontainer/wholedoc_929834983489834_20170101032000.log' WITH RECOVERY, STOPAT = '2017-01-01 03:15:20.000'; ALTER DATABASE wholedoc SET MULTI_USER;
위 명령어는 다음과 같다.
- 전체 백업 파일과 증분 로그 파일 2개를 사용하여 백업을 시도
- 첫 명령어는 위에 설명한 단일 전체 백업 파일을 사용하여 복원을 시도하는 것과 동일함, 다만 WITH NORECOVERY 만 다름, 복원을 계속 진행하기 위함
- 첫번째 증분 로그 파일을 복원
- 두번째 증분 로그 파일을 복원, WITH RECOVERY 를 사용하여 복원 완료, STOPAT 을 이용하여 특정 시점까지 복원
- 데이터베이스를 MULTI_USER 모드로 전환
관련문서
- Microsoft Azure Blob 저장소 서비스로 SQL Server 백업 및 복원 (링크)
- 자습서: SQL Server 2016에서 Azure Blob Storage 서비스 사용 (링크)
- 7단원: 데이터베이스를 특정 시점으로 복원 (링크)
- 복원 시 STOPAT 에 사용가능한 DateFormat (링크)
- RESTORE 문 (TRANSACT-SQL) (링크)
반응형
'프로그래밍 > 기타' 카테고리의 다른 글
문자메시지(SMS) 발송 모듈 설치 automail (0) | 2018.04.19 |
---|---|
Github API 를 이용한 Issue 자동 생성 (0) | 2018.04.19 |
홈페이지/블로그/티스토리 배경음악(BGM)넣기 (2) | 2017.11.07 |
티스토리 초대장 배포합니다 (31) | 2017.09.08 |
티스토리 초대장 배포합니다 (32) | 2017.07.04 |