Amazon Relational Database Service
사용 설명서 (API 버전 2014-10-31)

SQL Server 데이터베이스 가져오기 및 내보내기

Amazon RDS는 전체 백업 파일(.bak 파일)을 사용하여 Microsoft SQL Server 데이터베이스에 기본 백업 및 복원을 할 수 있도록 지원합니다. RDS를 사용할 때 데이터베이스 서버의 로컬 파일 시스템을 사용하는 대신 Amazon S3에 저장된 파일에 액세스합니다.

예를 들어 로컬 서버에서 전체 백업을 생성하고, 이를 S3에 저장한 후, 기존 Amazon RDS DB 인스턴스에서 복원할 수 있습니다. 또한 RDS에서 백업을 만들고, 이를 S3에 저장한 후, 어디든 원하는 곳에서 복원할 수 있습니다.

모든 AWS 리전에서 단일 AZ 및 다중 AZ DB 인스턴스에 대해 기본 백업 및 복원을 사용할 수 있습니다. Amazon RDS에서 지원되는 Microsoft SQL Server의 모든 버전에 기본 백업 및 복원이 제공됩니다.

다음 다이어그램은 지원되는 시나리오를 보여 줍니다.


			기본 백업 및 복원 아키텍처

기본 .bak 파일을 사용하여 데이터베이스를 백업 및 복원하는 과정은 대개의 경우 데이터베이스를 가장 빨리 백업하고 복원할 수 있는 방법입니다. 또한 기본 백업 및 복원을 이용하는 것보다 장점이 더 많습니다. 예를 들면,

  • Amazon RDS로/에서 데이터베이스 마이그레이션

  • Amazon RDS SQL Server DB 인스턴스 간에 데이터베이스를 이동합니다.

  • .bak 파일 내부의 데이터, 스키마, 저장 프로시저, 트리거 및 기타 데이터베이스 코드를 마이그레이션합니다.

  • DB 인스턴스 전체가 아닌 데이터베이스 하나를 백업 및 복원합니다.

  • 개발, 테스트, 교육, 데모를 위해 데이터베이스 사본을 만듭니다.

  • 재해 복구를 위한 추가 보호 계층을 위해 Amazon S3를 통해 백업 파일을 저장 및 전송합니다.

제한 및 권장 사항

다음은 기본 백업 및 복원을 사용할 때 적용되는 몇 가지 제한 사항입니다.

  • Amazon RDS DB 인스턴스와 다른 AWS 리전에서는 Amazon S3 버킷으로 백업하거나 복원할 수 없습니다.

  • 한 표준 시간대의 백업 파일을 다른 표준 시간대로 복원하지 않는 것이 좋습니다. 한 표준 시간대의 백업 파일을 다른 표준 시간대로 복원하는 경우 쿼리와 애플리케이션을 감사하여 표준 시간대 변경의 영향을 확인해야 합니다.

  • 1TB보다 큰 데이터베이스 백업은 지원되지 않습니다.

  • 크기가 4TB를 초과하는 데이터베이스는 복원할 수 없습니다. SQL-Server Express에서 데이터베이스 복원은 MSSQL 에디션에 의해 10GB 미만으로 제한됩니다.

  • 유지 관리 기간 또는 Amazon RDS에서 데이터베이스 스냅샷을 만드는 동안에는 데이터베이스를 백업할 수 없습니다.

  • 다중 AZ DB 인스턴스에서는 전체 복구 모델로 백업된 데이터베이스만 복원할 수 있습니다.

  • 트랜잭션 내에서 백업/복원을 위한 RDS 프로시저 호출은 지원되지 않습니다.

  • 백업 파일은 "암호화 전용" 암호 모드를 사용하여 지정된 KMS 키로 암호화됩니다. 암호화된 백업 파일을 복원할 때 파일이 "암호화 전용" 암호 모드로 암호화되었음을 알고 있어야 합니다.

백업 파일을 만들고, 복사하고, 복원하는 동안 데이터베이스를 오프라인 상태로 둘 수 있다면 Amazon RDS로 데이터베이스를 마이그레이션할 때 기본 백업 및 복원을 사용하는 것이 좋습니다. 온프레미스 데이터베이스를 오프라인으로 전환할 수 없다면 AWS Database Migration Service를 사용하여 데이터베이스를 Amazon RDS로 마이그레이션하는 것이 좋습니다. 자세한 내용은 AWS Database Migration Service​란 무엇입니까?​ 단원을 참조하십시오.

기본 백업 및 복원은 리전 간 스냅샷 복사 기능의 데이터 복구 대신 사용하기 위한 기능이 아닙니다. Amazon RDS에서 리전 간 재해 복구를 위해 데이터베이스 스냅샷을 다른 리전으로 복사할 때는 스냅샷 복사를 이용하는 것이 좋습니다. 자세한 내용은 스냅샷 복사 단원을 참조하십시오.

기본 백업 및 복원 설정

기본 백업 및 복원을 설정하려면 다음 세 가지 구성 요소가 필요합니다.

  • 백업 파일을 저장할 Amazon S3 버킷.

    백업 파일에 사용한 후 RDS로 마이그레이션하려는 백업을 업로드할 S3 버킷이 있어야 합니다. 이미 Amazon S3 버킷이 있으면 그 버킷을 사용하면 됩니다. 없는 경우 버킷을 생성할 수 있습니다. 또는 AWS Management 콘솔을 사용하여 SQLSERVER_BACKUP_RESTORE 옵션을 추가할 때 새 버킷이 생성되도록 선택할 수도 있습니다.

    S3 사용에 대한 정보는 Amazon Simple Storage Service 시작 안내서의 간단한 소개 또는 Amazon Simple Storage Service 콘솔 사용 설명서의 자세한 내용을 참조하십시오.

  • 버킷에 액세스하기 위한 AWS Identity and Access Management(IAM) 역할.

    이미 IAM 역할이 있으면 그 역할을 사용하면 됩니다. IAM 역할이 없는 경우에는 수동으로 새 역할을 만들 수 있습니다. 또는 AWS Management 콘솔을 사용하여 SQLSERVER_BACKUP_RESTORE 옵션을 추가할 때 새 IAM 역할이 생성되도록 선택할 수도 있습니다. 수동으로 새 IAM 역할을 생성하거나 기존의 IAM 역할에 신뢰 및 권한 정책을 연결하려면 다음 단원에서 설명하는 접근 방식을 사용하십시오.

  • DB 인스턴스의 옵션 그룹에 SQLSERVER_BACKUP_RESTORE 옵션 추가.

    DB 인스턴스에서 기본 백업 및 복원을 활성화하려면 DB 인스턴스의 옵션 그룹에 SQLSERVER_BACKUP_RESTORE 옵션을 추가합니다. 자세한 정보와 지침은 Microsoft SQL Server 기본 백업 및 복원 지원 단원을 참조하십시오.

기본 백업 및 복원을 위한 IAM 역할 수동으로 만들기

기본 백업 및 복원에 사용할 새 IAM 역할을 수동으로 만들려면 먼저 Amazon RDS 서비스에서 Amazon S3 버킷으로 권한을 위임하기 위한 역할을 만들어야 합니다. IAM 역할을 만들 때 신뢰 및 권한 정책을 연결합니다. 신뢰 정책은 RDS가 이 역할을 맡도록 허용합니다. 권한 정책은 이 역할이 수행할 수 있는 작업을 정의합니다. 역할을 만드는 방법에 대한 자세한 내용은 AWS 서비스에 대한 권한을 위임할 역할 생성을 참조하십시오.

기본 백업 및 복원 기능의 경우, 이 단원의 예제와 비슷한 신뢰 및 권한 정책을 사용합니다. 다음 예에서 서비스 원칙 이름인 rds.amazon.aws.com를 모든 서비스 계정의 별칭으로 사용했습니다. 다른 예에서는 신뢰 정책에서 액세스 권한을 부여할 다른 계정, 사용자, 역할을 식별하기 위해 Amazon 리소스 이름(ARN)을 지정합니다.

예 기본 백업 및 복원을 위한 신뢰 정책

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Service": "rds.amazonaws.com"}, "Action": "sts:AssumeRole" }] }

다음 예에서는 ARN을 사용하여 리소스를 지정합니다. ARN 사용에 대한 자세한 내용은 Amazon 리소스 이름(ARN)을 참조하십시오.

예 암호화 지원 없는 기본 백업 및 복원을 위한 권한 정책

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucket_name" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::bucket_name/*" } ] }

예 암호화 지원 있는 기본 백업 및 복원을 위한 권한 정책

백업 파일을 암호화하려면 권한 정책에 암호화 키를 포함시켜야 합니다. 암호화 키에 대한 자세한 내용은 AWS Key Management Service(AWS KMS) 설명서의 시작하기를 참조하십시오.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:GenerateDataKey", "kms:Encrypt", "kms:Decrypt" ], "Resource": "arn:aws:kms:region:account-id:key/key-id" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucket_name" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::bucket_name/*" } ] }

기본 백업 및 복원 사용

기본 백업 및 복원을 활성화하고 구성한 다음에는 사용하기 시작할 수 있습니다. 먼저 Microsoft SQL Server 데이터베이스에 연결한 다음 해당 작업을 위한 Amazon RDS 저장 프로시저를 호출합니다. 데이터베이스 연결 방법에 대한 자세한 내용은 Microsoft SQL Server 데이터베이스 엔진 기반 DB 인스턴스에 연결하기 단원을 참조하십시오.

저장 프로시저 중에는 Amazon S3 버킷과 파일에 ARN(Amazon 리소스 이름)을 제공해야 하는 것도 있습니다. ARN의 형식은 arn:aws:s3:::bucket_name/file_name입니다. Amazon S3에서는 ARN에 계정 번호나 리전을 요구하지 않습니다. 선택적 AWS KMS 암호화 키도 제공하는 경우 ARN 형식은 arn:aws:kms:region:account-id:key/key-id입니다. 자세한 내용은 ARN(Amazon 리소스 이름) 및 AWS 서비스 네임스페이스 단원을 참조하십시오.

데이터베이스를 백업하고, 복원하고, 진행 중인 작업을 취소하고, 백업 및 복원 작업의 상태를 추적하기 위한 저장 프로시저가 있습니다. 각각의 저장 프로시저를 호출하는 방법에 대한 지침은 다음 하위 단원을 참조하십시오.

데이터베이스 백업

데이터베이스를 백업하려면 rds_backup_database 저장 프로시저를 호출해야 합니다.

참고

유지 관리 기간 중 또는 Amazon RDS에서 스냅샷을 만드는 동안에는 데이터베이스를 백업할 수 없습니다.

다음 파라미터는 필수 파라미터입니다.

  • @source_db_name – 백업할 데이터베이스의 이름입니다.

  • @s3_arn_to_backup_to – 백업에 사용할 버킷과 파일 이름입니다(Amazon S3 버킷 + 키 ARN).

    파일에는 어떤 확장명이든 있을 수 있지만 .bak이 기본적입니다.

다음 파라미터는 선택적입니다.

  • @kms_master_key_arn – 백업을 암호화할 키입니다(KMS 고객 마스터 키 ARN).

    암호화 키에 대한 자세한 내용은 AWS Key Management Service(AWS KMS) 설명서의 시작하기를 참조하십시오.

  • @overwrite_S3_backup_file – 기본값은 0입니다.

    • 0 – 기존 파일을 덮어쓰지 않습니다. 파일이 이미 있는 경우 그 대신 오류를 반환합니다.

    • 1 – 백업 파일이 아니더라도 지정된 이름이 있는 기존 파일을 덮어씁니다.

  • @type – 기본적으로 FULL로 설정되며 대소문자를 구분하지 않습니다.

    • differential – 차등 백업을 수행합니다.

    • full – 전체 백업을 수행합니다.

예 암호화 없는 차등 백업

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, @type='differential';

예 암호화를 사용하는 전체 백업

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, @type='FULL';

차등 백업은 마지막 전체 백업을 기반을 합니다. 차등 백업이 작동할 수 있도록 마지막 전체 백업과 차등 백업 간에는 스냅샷을 만들 수 없습니다. 차등 백업을 만들려고 할 때 스냅샷이 이미 있으면 차등 백업을 진행하기 전에 다른 전체 백업을 만드십시오.

다음 샘플 SQL을 사용하여 마지막 전체 백업 또는 스냅샷을 찾을 수 있습니다.

select top 1 database_name , backup_start_date , backup_finish_date from msdb.dbo.backupset where database_name='name-of-database' and type = 'D' order by backup_start_date desc;

데이터베이스 복원

데이터베이스를 복원하려면 rds_restore_database 저장 프로시저를 호출해야 합니다.

다음 파라미터는 필수 파라미터입니다.

  • @restore_db_name – 복원할 데이터베이스의 이름입니다.

  • @s3_arn_to_restore_from – 백업 파일이 들어 있는 Amazon S3 버킷이자 파일의 이름입니다.

다음 파라미터는 선택적입니다.

  • @kms_master_key_arn – 백업 파일을 암호화한 경우 파일 해독에 사용할 키입니다.

예 암호화 없음

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';

예 암호화 있음

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';

작업 취소

백업 또는 복원 작업을 취소하려면 rds_cancel_task 저장 프로시저를 호출합니다.

다음 파라미터는 선택적입니다.

  • @db_name – 작업을 취소할 데이터베이스의 이름입니다.

  • @task_id – 취소할 작업의 ID입니다. 작업 ID는 rds_task_status를 호출하여 확인할 수 있습니다.

exec msdb.dbo.rds_cancel_task @task_id=1234;

작업 상태 추적

백업 및 복원 작업의 상태를 추적하려면 rds_task_status 저장 프로시저를 호출합니다. 파라미터를 제공하지 않으면 이 저장 프로시저는 모든 작업의 상태를 반환합니다. 작업 상태는 약 2분마다 업데이트됩니다.

다음 파라미터는 선택적입니다.

  • @db_name – 작업 상태를 표시할 데이터베이스의 이름입니다.

  • @task_id – 작업 상태를 표시할 작업의 ID입니다.

exec msdb.dbo.rds_task_status @db_name='database_name';

rds_task_status 저장 프로시저는 다음과 같은 열을 반환합니다.

설명

task_id

작업의 ID입니다.

task_type

백업 작업에 대한 BACKUP_DB 또는 복원 작업에 대한 RESTORE_DB 중 하나입니다.

database_name

작업이 연결되어 있는 데이터베이스의 이름입니다.

% complete

백분율로 나타낸 작업의 진행률입니다.

duration (mins)

작업에 소요된 시간입니다(분).

lifecycle

작업의 상태입니다. 가능한 작업 상태는 다음과 같습니다.

  • CREATED – rds_backup_database 또는 rds_restore_database를 호출하는 즉시 작업이 생성되고 상태는 CREATED로 설정됩니다.

  • IN_PROGRESS – 백업 또는 복원 작업이 시작된 후 상태가 IN_PROGRESS로 설정됩니다. CREATED에서 IN_PROGRESS로 상태가 변경되려면 최대 5분이 걸릴 수 있습니다.

  • SUCCESS – 백업 또는 복원 작업이 완료된 후 상태가 SUCCESS로 설정됩니다.

  • ERROR – 백업 또는 복원 작업이 실패한 후 상태가 ERROR로 설정됩니다. 오류에 대한 자세한 내용은 task_info 열을 참조하십시오.

  • CANCEL_REQUESTED – rds_cancel_task를 호출하는 즉시 작업의 상태가 CANCEL_REQUESTED로 설정됩니다.

  • CANCELLED – 작업이 성공적으로 취소된 뒤에는 작업 상태가 CANCELLED로 설정됩니다.

task_info

작업에 대한 추가 정보입니다.

데이터베이스를 백업하거나 복원하는 동안 오류가 발생하면 이 열에 오류에 대한 정보가 포함됩니다. 가능한 오류 목록 및 완화 전략은 문제 해결 단원을 참조하십시오.

last_updated

작업 상태를 마지막으로 업데이트한 날짜와 시간입니다. 상태는 5% 진행 후마다 업데이트됩니다.

created_at

작업을 생성한 날짜와 시간입니다.

overwrite_S3_backup_file

백업 작업을 호출할 때 지정된 @overwrite_S3_backup_file 파라미터의 값입니다. 자세한 내용은 데이터베이스 백업 단원을 참조하십시오.

백업 파일 압축

Amazon S3 버킷 용량 절약을 위해 백업 파일을 압축할 수 있습니다. 백업 파일 압축에 대한 자세한 내용은 Microsoft 설명서의 Backup Compression을 참조하십시오.

백업 파일 압축은 다음 데이터베이스 에디션에 지원됩니다.

  • Microsoft SQL Server Enterprise Edition

  • Microsoft SQL Server Standard Edition

백업 파일 압축을 설정하려면 다음 코드를 실행하십시오.

exec rdsadmin..rds_set_configuration 'S3 backup compression', 'true';

백업 파일 압축을 해제하려면 다음 코드를 실행하십시오.

exec rdsadmin..rds_set_configuration 'S3 backup compression', 'false';

문제 해결

다음은 기본 백업 및 복원을 사용할 때 생길 수 있는 문제들입니다.

문제 문제 해결 제안

Access Denied

백업 또는 복원 프로세스는 백업 파일에 액세스할 수 없습니다. 이것의 원인이 되는 문제는 일반적으로 다음과 같습니다.

  • 올바르지 않은 버킷 참조. 올바르지 않은 형식을 사용하여 버킷 참조. ARN을 사용하지 않고 파일 이름 참조.

  • 버킷 파일에 올바르지 않은 권한. 예컨대 지금 액세스를 시도하는 계정과 다른 계정에서 생성한 경우 올바른 권한을 추가하십시오.

  • 올바르지 않거나 완전하지 않은 IAM 정책. IAM 역할에는 올바른 버전을 비롯하여 필요한 요소가 모두 포함되어야 합니다. 이에 대해서는 SQL Server 데이터베이스 가져오기 및 내보내기에 강조 표시되어 있습니다.

BACKUP DATABASE WITH COMPRESSION is not supported on <edition_name> Edition

백업 파일 압축은 Microsoft SQL Server Enterprise Edition과 Standard Edition에서만 지원됩니다.

자세한 내용은 백업 파일 압축 단원을 참조하십시오.

Key <ARN> does not exist

암호화된 백업을 복원하려고 시도했으나 유효한 암호화 키를 제공하지 않았습니다. 암호화 키를 확인한 후 다시 시도하십시오.

자세한 내용은 데이터베이스 복원 단원을 참조하십시오.

Please reissue task with correct type and overwrite property

데이터베이스 백업을 시도할 때 이미 존재하는 파일 이름을 입력하고 덮어쓰기 속성을 false로 설정하면 저장 작업이 실패합니다. 이 오류를 해결하려면 존재하지 않는 파일 이름을 입력하거나 덮어쓰기 속성을 true로 설정하십시오.

자세한 내용은 데이터베이스 백업 단원을 참조하십시오.

데이터베이스를 복원할 때 잘못하여 rds_backup_database 저장 프로시저를 호출했을 수도 있습니다. 이 경우 대신 rds_restore_database 저장 프로시저를 호출하십시오.

자세한 내용은 데이터베이스 복원 단원을 참조하십시오.

데이터베이스를 복원할 때 rds_restore_database 저장 프로시저를 호출한 경우, 유효한 백업 파일 이름을 입력했는지 확인하십시오.

자세한 내용은 기본 백업 및 복원 사용 단원을 참조하십시오.

Please specify a bucket that is in the same region as RDS instance

Amazon RDS DB 인스턴스와 다른 AWS 리전에서는 Amazon S3 버킷으로 백업하거나 복원할 수 없습니다. Amazon S3 복제를 사용하여 백업 파일을 올바른 리전에 복사할 수 있습니다.

자세한 내용은 Amazon S3 설명서의 리전 간 복제 단원을 참조하십시오.

The specified bucket does not exist

버킷 및 파일에 대해 올바른 ARN을 올바른 형식으로 입력했는지 확인하십시오.

자세한 내용은 기본 백업 및 복원 사용 단원을 참조하십시오.

User <ARN> is not authorized to perform <kms action> on resource <ARN>

암호화된 작업을 요청했으나 올바른 AWS KMS 권한을 제공하지 않았습니다. 올바른 권한이 있는지 확인하거나 올바른 권한을 추가하십시오.

자세한 내용은 기본 백업 및 복원 설정 단원을 참조하십시오.

관련 주제