데이터베이스 백업이란 데이터베이스의 운영 상태, 아키텍처, 저장된 데이터를 백업한 결과물을 의미합니다. 이를 통해 기본 데이터베이스가 충돌하거나 손상되거나 유실되는 상황에 대비해 중복 인스턴스 또는 데이터베이스 사본을 생성할 수 있습니다.
이 글에서는 AWS(Amazon Web Services) RDS(Relational Database Service)에서 SQL 네이티브 데이터베이스를 백업, 복원, 모니터링하는 방법을 자세히 살펴봅니다.
AWS RDS에서 SQL 네이티브 전체 백업 수행
AWS에서는 RDS SQL 인스턴스의 SQL 네이티브 데이터베이스에 대해 전체 백업(full backup)만 수행할 수 있습니다. rds_backup_database 저장 프로시저를 사용하면 SQL 데이터베이스의 전체 백업을 S3 버킷에 생성할 수 있으며, 사용 예시는 다음과 같습니다.
-- 데이터베이스 백업 수행 명령어
exec msdb.dbo.rds_backup_database
@source_db_name='database_name',
@s3_arn_to_backup_to='arn:aws:s3:::bucket_name/file_name_and_extension',
@overwrite_S3_backup_file=1;
-- KMS 암호화 백업 수행 명령어
exec msdb.dbo.rds_backup_database
@source_db_name='database_name',
@s3_arn_to_backup_to='arn:aws:s3:::bucket_name/file_name_and_extension',
@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id',
@overwrite_S3_backup_file=1;
이미지 출처: https://niftit.com/backup-with-aws-rds/
AWS RDS에서 SQL 네이티브 전체 백업 복원
rds_restore_database 저장 프로시저를 사용하면 S3 버킷에 저장된 백업 파일로부터 AWS RDS 인스턴스에 SQL 데이터베이스를 복원할 수 있습니다.
참고: 아래 예제 실행 시 환경에 맞게 다음 파라미터 값을 변경해야 할 수 있습니다.
- database_name
- bucket_name
- file_name_and_extension
- region
- account-id
- key-id
-- S3 버킷의 백업 파일로부터 DB 복원 명령어
exec msdb.dbo.rds_restore_database
@restore_db_name='database_name',
@s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name_and_extension';
-- KMS 키가 적용된 S3 버킷으로부터 DB 복원 명령어
exec msdb.dbo.rds_restore_database
@restore_db_name='database_name',
@s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name_and_extension',
@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id';
이미지 출처: https://www.awslab.io/sqlserver/lab2/
AWS RDS 백업 및 복원의 제약 사항과 제외 항목
이 섹션에서는 AWS RDS에서 데이터베이스를 백업하거나 복원할 때 알아두어야 할 제약 사항과 제외 항목을 설명합니다.
AWS RDS SQL 네이티브 백업의 제외 항목
다음 SQL 네이티브 요소는 AWS RDS 인스턴스에서 백업하거나 복원할 수 없습니다.
- 차등 백업(Differential)
- 트랜잭션 로그(Transaction log)
- 파일 그룹 백업(Filegroup backup)
AWS RDS SQL 네이티브 백업의 제약 사항
- AWS RDS 인스턴스에서 지원되는 최대 백업 파일 크기는 1TB입니다.
- 백업은 반드시 해당 RDS 인스턴스와 동일한 리전의 S3 버킷에 생성해야 합니다. RDS 인스턴스가 위치한 리전 A의 S3 버킷에 접근 권한이 있는 사용자가 리전 B의 S3 버킷에 데이터베이스를 백업하려고 하면 다음과 같은 오류가 발생합니다.
Aborted the task because of a task failure or an overlap with your
preferred backup window for RDS automated backup.
Access Denied.
Please specify a bucket that is in the same region as RDS instance.
데이터베이스 백업 및 복원 제약 시나리오
KMS 암호화 백업
AWS는 KMS(Key Management Service)로 암호화된 백업을 온프레미스 SQL 서버나 다른 EC2 인스턴스로 복원하는 것을 지원하지 않습니다. 백업 파일을 복원해야 하는 경우에는 동일한 리전에 동일한 KMS 키를 사용하는 새 RDS 인스턴스를 생성해야 합니다. KMS 암호화 백업을 복원한 후에는 암호화 없이 백업을 다시 수행하여 온프레미스 또는 다른 EC2 인스턴스로 복원할 수 있습니다.
KMS 암호화 백업을 복원하려고 하면 다음과 같은 오류가 발생할 수 있습니다.
Msg 3241, Level 16, State 0, Line 1
The media family on device 'C:\TempDB_Encrypted.bak' is incorrectly formed.
SQL Server cannot process this media family.
TDE 활성화 백업
AWS는 TDE(Transparent Data Encryption)가 활성화된 백업을 Enterprise 에디션에서만 지원하며, 인증서와 마스터 키가 모두 필요합니다. 데이터베이스 백업에는 키가 포함되지 않기 때문에 AWS RDS 인스턴스에서 복원하려고 하면 다음 오류가 발생합니다.
Cannot find server certificate. RESTORE FILELIST is terminating abnormally.
동일한 AWS 인스턴스에서 백업 복원
AWS는 기존 데이터베이스를 덮어쓰거나 AWS RDS 인스턴스를 기존 데이터베이스 위로 복원하는 것을 허용하지 않습니다. 반드시 다른 이름의 데이터베이스로 복원해야 합니다. 기존 데이터베이스로 복원하려고 하면 다음 오류가 발생합니다.
Aborted the task because of a task failure or a concurrent RESTORE_DB request.
Task ID x (RESTORE_DB) exception: Database TestDB cannot be restored because
there is already an existing database with the same file_guids on the instance.
백업 및 복원 작업 모니터링
AWS는 rds_task_status 저장 프로시저를 사용하여 백업 및 복원 작업을 추적합니다.
exec msdb.dbo.rds_task_status @db_name='database_name'
이미지 출처: https://www.awslab.io/sqlserver/lab2/
추적 ID(task id)를 확인한 후에는 다음 코드를 사용하여 백업 또는 복원 작업의 진행 상황을 모니터링할 수 있습니다.
exec msdb..rds_task_status @task_id= 4
결론
AWS RDS를 활용하면 SQL 네이티브 데이터베이스의 전체 백업과 복원을 손쉽게 수행할 수 있습니다. 다만, 다른 AWS 리전의 S3 버킷에 백업하거나 KMS 암호화 백업, TDE 활성화 백업을 복원할 때는 몇 가지 제약 사항이 존재합니다. 따라서 데이터베이스를 프로덕션 환경으로 마이그레이션하거나 복원하기 전에 반드시 테스트 환경에서 백업 및 복원 과정을 충분히 검증하는 것이 좋습니다.
궁금한 점이나 의견이 있다면 피드백 탭을 통해 남겨 주세요.
전문가의 관리와 구성으로 환경 최적화
Rackspace의 애플리케이션 서비스 (RAS) 전문가들은 폭넓은 애플리케이션 포트폴리오 전반에서 다음과 같은 전문 서비스와 관리형 서비스를 제공합니다.
- e커머스 및 디지털 경험 플랫폼
- 엔터프라이즈 리소스 플래닝(ERP)
- 비즈니스 인텔리전스(BI)
- Salesforce 고객 관계 관리(CRM)
- 데이터베이스
- 이메일 호스팅 및 생산성 솔루션
우리가 제공하는 차별점은 다음과 같습니다.
- 편향 없는 전문성: 즉각적인 가치를 창출하는 역량에 집중하여 고객의 현대화 여정을 단순화하고 안내합니다.
- Fanatical Experience™: '프로세스 우선, 기술은 그다음(Process first. Technology second.)'이라는 접근 방식과 전담 기술 지원을 결합해 종합적인 솔루션을 제공합니다.
- 타의 추종을 불허하는 포트폴리오: 풍부한 클라우드 경험을 바탕으로 올바른 클라우드에 적합한 기술을 선택하고 배포할 수 있도록 지원합니다.
- 애자일한 서비스 제공: 고객의 여정 단계에 맞춰 함께하며, 우리의 성공을 고객의 성공과 일치시킵니다.
지금 바로 채팅으로 문의하여 시작해 보세요.