AWS S3 버킷 활용하여 AWS RDS DB .bak 파일 복원 및 백업 방법

AWS RDS DB 복원 및 백업 방법

.bak 파일 업로드용 S3 버킷 생성

버킷명 입력 > RDS DB의 리전(ap-northeast-2b : 서울)과 같은 리전 선택 > 퍼블릭 액세스 차단 전부 풀고 > 암호화 키 유형 : Amazon S3 관리형 키(SSE-S3) 선택 > 버킷 키 비활성화 > 객체 잠금 비활성화 > 버킷 만들기

RDS에서 S3에 접근 가능한 공용 IAM 역할 생성

IAM > 액세스 관리 > 역할 > 역할 만들기

신뢰할 수 있는 엔터티 유형 AWS 서비스 선택
다른 AWS 서비스의 사용 사례 사용 사례를 조회할 서비스 선택 > RDS > RDS - Add Role to Database 선택

위와 같이 선택 후 다음 > AmazonS3FullAccess (모든 S3 리소스에 대한 모든 액세스 가능 정책) 검색하여 선택 후 다음 > 역할 이름 : AddDatabaseRoleRDS-S3 입력 후 저장

RDS 옵션 그룹 생성

RDS > 옵션 그룹 > 그룹 생성

이름 NativeBackupRestore-프로젝트명 입력
설명 Option group to restore backup from S3 bucket 입력
엔진 sqlserver-ex 선택
메이저 엔진 버전 12.00 선택

생성된 옵션 그룹 선택 후 옵션 추가

옵션 이름 SQLSERVER_BACKUP_RESTORE (SQL Server의 기본 백업/복원에 대해 사용합니다. 백업 파일을 저장하려는 S3 위치에 대한 액세스 권한을 IAM 역할을 통해 DB 인스턴스에 부여합니다.) 선택
IAM 역할 생성했던 IAM 역할 AddDatabaseRoleRDS-S3 선택
옵션 추가 예약 즉시 선택

위와 같이, 옵션 그룹에 SQLSERVER_BACKUP_RESTORE 옵션 활성화, IAM 역할 부여가 필요합니다.

RDS DB 옵션 그룹 변경

RDS > 데이터베이스 > DB 선택 > 수정 > 추가구성 > 옵션 그룹 : NativeBackupRestore-프로젝트명 선택 후 계속 > 즉시 적용 선택 > DB 인스턴스 수정

S3 버킷에 .bak 파일 업로드

S3 > 생성했던 S3 버킷 선택 > 업로드 > 파일 추가 후 .bak 파일 추가

S3 버킷에서 .bak 파일 복원

exec msdb.dbo.rds_restore_database
@restore_db_name='복원할DB명',
@s3_arn_to_restore_from='arn:aws:s3:::S3버킷명/DB백업파일명.bak';

DBeaver 또는 SSMS에서 위 명령어 실행하면 복원이 완료됩니다.

S3 버킷에 .bak 파일 백업

exec msdb.dbo.rds_backup_database 
@source_db_name='백업할DB명', 
@s3_arn_to_backup_to='arn:aws:s3:::S3버킷명/DB백업파일명.bak',
@overwrite_S3_backup_file=1;

S3 버킷에 RDS DB를 백업할 수 있는 명령어입니다.


백업 및 복원 상태 확인

exec msdb.dbo.rds_task_status @db_name='DB명';

complete : 100%, lifecycle : SUCCESS로 나오면 복원 성공입니다.

옵션 미설정 시 에러메세지

Database backup/restore option is not enabled yet or is in the process of being enabled. Please try again later.

복원 실패하면 RDS에 옵션 설정이 제대로 되어있는지 확인해야 합니다.

Categories:

Updated:

Leave a comment