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에 옵션 설정이 제대로 되어있는지 확인해야 합니다.
Leave a comment