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

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

Amazon RDS는 전체 백업 파일(.bak 파일)을 사용하여 Microsoft SQL Server 데이터베이스에 기본 백업 및 복원을 할 수 있도록 지원합니다. 이동하기 쉬운 파일 하나로 SQL Server 데이터베이스를 가져오고 내보낼 수 있습니다. 온프레미스 데이터베이스의 전체 백업을 만들어서 Amazon Simple Storage Service(Amazon S3)에 저장한 다음, SQL Server를 실행하는 기존의 Amazon RDS DB 인스턴스에 백업 파일을 복원할 수 있습니다. Amazon RDS SQL Server 데이터베이스를 백업하여 Amazon S3에 저장하고, 그 백업 파일을 온프레미스 서버에 복원하거나 SQL Server를 실행하는 다른 Amazon RDS DB 인스턴스에 복원할 수 있습니다.

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


			기본 백업 및 복원 아키텍처

.bak 파일을 사용하여 데이터베이스를 백업 및 복원하는 과정은 철저히 최적화되어 있으며, 대개의 경우 데이터베이스를 가장 빨리 백업하고 복원할 수 있는 방법입니다. 또한 기본 백업 및 복원을 이용하는 것보다 장점이 더 많습니다. 다음을 수행할 수 있습니다.

  • 데이터베이스를 Amazon RDS로 마이그레이션합니다.

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

  • 데이터를 가져오고 내보냅니다.

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

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

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

  • Amazon S3를 통해 Amazon RDS에 백업 파일을 저장하거나 전송하여 재해 복구를 위한 추가 보호 계층을 제공합니다.

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

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

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

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

  • 크기가 1TB를 초과하는 데이터베이스는 백업할 수 없습니다.

  • 크기가 4TB를 초과하는 데이터베이스는 복원할 수 없습니다.

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

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

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

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

기본 백업 및 복원 설정

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

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

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

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

이미 Amazon S3 버킷이 있으면 그 버킷을 사용하면 됩니다. Amazon S3 버킷이 없는 경우에는 수동으로 새 버킷을 만들 수 있습니다. 또는 AWS Management 콘솔을 사용하여 SQLSERVER_BACKUP_RESTORE 옵션을 추가할 때 새 버킷이 생성되도록 선택할 수도 있습니다. 수동으로 새 버킷을 만드는 방법은 버킷 생성을 참조하십시오.

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

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

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

기본 백업 및 복원에 사용할 새 IAM 역할을 수동으로 만들려면 먼저 Amazon RDS 서비스에서 Amazon S3 버킷으로 권한을 위임하기 위한 역할을 만들어야 합니다. IAM 역할을 만들 때 신뢰 및 권한 정책을 연결합니다. 기본 백업 및 복원 기능의 경우, 다음 예제와 비슷한 신뢰 및 권한 정책을 사용합니다. 역할을 만드는 방법에 대한 자세한 정보는 AWS 서비스에 대한 권한을 위임할 역할 생성을 참조하십시오.

신뢰 및 권한 정책을 사용하려면, Amazon 리소스 이름(ARN)을 제공합니다. ARN 형식에 대한 자세한 정보는 ARN(Amazon 리소스 이름) 및 AWS 서비스 네임스페이스를 참조하십시오.

다음 첫 번째 예에서 서비스 원칙 이름인 rds.amazon.aws.com를 모든 서비스 계정의 별칭으로 사용했습니다. 다른 예에서는 신뢰 정책에서 액세스 권한을 부여할 다른 계정, 사용자, 역할을 식별하기 위해 ARN을 지정합니다.

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

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

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucket_name" }, { "Effect": "Allow", "Action": [ "s3:GetObjectMetaData", "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:GetObjectMetaData", "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';

기본 백업 및 복원을 사용하여 Amazon RDS로 마이그레이션

기업 데이터 센터에서 Amazon RDS로 데이터베이스를 마이그레이션하려면 이 주제의 절차에 따라야 합니다. 그러나 다음 단계에 따라 다음을 준비할 수 있습니다.

  1. Amazon S3 버킷을 생성합니다. 자세한 정보는 버킷 생성을 참조하십시오.

  2. 데이터베이스 백업 파일을 Amazon S3 버킷에 업로드합니다. 자세한 정보는 Amazon S3에 객체 업로드 단원을 참조하십시오.

문제 해결

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

문제 문제 해결 제안

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에서만 지원됩니다.

자세한 정보는 백업 파일 압축 단원을 참조하십시오.

Database <database_name> cannot be restored because there is already an existing database with the same family_guid on the instance

백업 파일을 만들 때 사용한 DB 인스턴스로 해당 백업 파일을 복원할 수 없습니다. 그 대신 새 DB 인스턴스로 백업 파일을 복원해야 합니다.

또한 동일한 백업 파일을 하나의 DB 인스턴스로 여러 번 복원할 수 없습니다. 다시 말해 복원 중인 데이터베이스를 이미 포함하고 있는 DB 인스턴스에는 백업 파일을 복원할 수 없습니다. 그 대신 새 DB 인스턴스로 백업 파일을 복원해야 합니다.

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 권한을 제공하지 않았습니다. 올바른 권한이 있는지 확인하거나 올바른 권한을 추가하십시오.

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

관련 주제