이 블로그에서는 온프레미스(또는 Amazon® EC2 또는 Azure®)에서 호스팅되는 Microsoft® SQL Server® 데이터베이스를 Amazon Relational DatabaseService(RDS)로 이동하는 방법을 설명합니다. 이 이동을 위해서는 SQL 데이터베이스를 AWS S3bucket에 백업하고 해당 S3 버킷에서 AWS RDS 인스턴스의 데이터베이스를 복원해야 합니다.
소개
이전 버전의 Amazon RDS 인스턴스에서는 .bak에서 데이터를 복원할 수 없었습니다. 파일. 결과적으로 사용자는 Amazon Data Migration Services를 사용하거나 가져오기 및 내보내기를 사용해야 했습니다. AWS RDS에서 데이터를 주고받는 마법사
Amazon은 2016년 7월에 기본 백업 복원에 대한 지원을 시작했으며 RDS의 MSDB 데이터베이스에 다음 저장 프로시저를 추가했습니다.
- rds_backup_database – 단일 데이터베이스를 S3 버킷에 백업합니다.
- rds_restore_database – S3에서 단일 데이터베이스를 복원합니다.
- rds_task_status – 실행 중인 백업 및 복원 작업을 추적합니다.
- rds_cancel_task – 실행 중인 백업 또는 복원 작업을 취소합니다.
이 블로그에서는 rds_restore_database를 활용하는 방법에 대해 설명합니다. .bak 복원 절차 S3의 파일 및 rds_task_status 사용 방법 AWS S3 동기화 명령을 사용하여 백업 파일을 AWS S3 버킷에 업로드하는 동안 복원 진행률을 모니터링하는 절차입니다.
전제조건
마이그레이션을 수행하려면 다음 전제 조건이 있어야 합니다.
- SQL 서버 에이전트 프록시
- AWS 명령줄 인터페이스(AWS CLI)
- ProfileName(Amazon S3에 대한 액세스 권한이 있는 AWS 사용자 및
aws_access_key_id
를 포함하는 S3 버킷 및aws_secret_access_key
.) SQLSERVER_BACKUP_RESTORE
가 있는 적절한 옵션 그룹이 있는 AWS RDS 인스턴스 매핑된 옵션입니다.- PowerShell 설치
또한 SQL Server, S3 버킷 생성, AWS 사용자 생성, S3 버킷에 대한 액세스 권한 부여 및 RDS 인스턴스 생성에 대한 기본 지식이 있어야 합니다.
솔루션
다음 단계에서는 다음 섹션의 솔루션을 다룹니다.
-
로컬 서버에 데이터베이스를 백업하십시오.
-
백업 파일을 AWS S3 버킷에 복사합니다.
-
S3 버킷에서 RDS의 SQL 백업을 복원합니다.
로컬 서버의 데이터베이스 백업
모든 방법을 사용하여 로컬로 백업할 수 있습니다. 다음 예는 .bat를 사용합니다. 마이그레이션 작업을 예약해야 하는 경우 SQL 에이전트 작업에서와 같이 사용할 수 있는 sqlcmd 명령이 포함된 스크립트:
Sqlcmd -S SourceInstanceName -U sa -P password_here -Q
"Declare @DBName nvarchar(200)='MigrationTestDB'
DECLARE @BackupLocation NVARCHAR(2000) = 'C:\Temp\RDSmigration\backup\'+@DBName+
+ REPLACE(CONVERT(VARCHAR(20), GETDATE(), 120) + '.bak', ':', '');
BACKUP DATABASE @DBName TO DISK = @BackupLocation with compression;"
AWS S3 버킷에 백업 파일 복사 및 업로드
AWS S3 copy
을 사용하여 이 작업을 수행할 수 있습니다. 또는 AWS S3 sync
명령. 그러나 sync 명령은 업계에서 매우 대중적이고 널리 사용되므로 다음 예제에서 사용합니다.
기본적으로 AWS sync 명령은 파일을 삭제하지 않습니다. 단순히 새 파일이나 수정된 파일을 대상에 복사합니다. SQL 에이전트 작업에서 다음 PowerShell 스크립트를 사용할 수 있습니다. cmdExec
를 실행하도록 구성된 SQL 에이전트 프록시 계정을 사용하여 백업 및 이 복사 단계를 모두 실행해야 합니다. 및 PowerShell 하위 시스템.
$LogDate = Get-Date -Format yyyy-MM-dd
$Global:LogFile = "C:\Temp\RDSmigration\Logs\$LogDate.log"
$env:Path += ';C:\Program Files\Amazon\AWSCLI\bin'
Set-AWSCredential -ProfileName backuptos3user
aws configure set aws_access_key_id AKIAVIH6FYWVO62BZ7QA
aws configure set aws_secret_access_key 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
aws configure set region ap-south-1
try
{
$now = (Get-Date -Format G)
aws s3 sync C:\Temp\RDSmigration\backup s3:// ramkrdsrestore --sse | out-file $LogFile
}
catch {
Write-Host $_.Exception.Message -ForegroundColor Green
}
S3 버킷에서 RDS의 SQL 백업 복원
다음 명령을 실행하여 MigrationTestDB2019-08-15 181640.bak을 복원합니다. MigrationTestDB로 파일 데이터베이스:
EXEC msdb.dbo.rds_restore_database
@restore_db_name = 'MigrationTestDB',
@S3_arn_to_restore_from = 'arn:aws:s3:::ramkrdsrestore/MigrationTestDB2019-08-15 181640.bak'
저장 프로시저에 제공된 매개변수에 유의하십시오. 다음 매개변수를 지정해야 합니다.
- 복원할 데이터베이스의 이름입니다.
- 백업 파일의 Amazon 리소스 이름(ARN)입니다. S3 객체의 경우 ARN은 여기에 표시된 형식을 따릅니다.
SQL Server는 복원 작업을 시작하고 TaskID를 할당합니다. . 다음 명령을 사용하여 작업 상태를 쉽게 추적할 수 있습니다.
EXEC msdb.[dbo].[rds_task_status] @db_name ='DestinationDBName'
TaskID를 사용할 수 있습니다. @db_name 대신 진행 상황 추적 .
다음 사항에 유의하십시오.
- 버킷 백업 파일 이름은 rds_restore_database에서 대소문자를 구분합니다. 절차.
- 옵션 그룹에 사용된 IAM 역할은 S3 버킷에 액세스할 수 있습니다.
- S3 버킷 정책은 IAM 역할 제외에 제한이 없습니다.
- RDS SQL 인스턴스는 백업/복원 옵션을 추가한 올바른 옵션 그룹을 사용합니다. 이 설정은 중요합니다. 그렇지 않으면 복원이 시작되지 않습니다.
Amazon RDS에서 SQL Server 기본 백업 및 복원의 제한 사항
다음은 AmazonRDS에서 SQL Server 기본 백업 및 복원의 몇 가지 제한 사항입니다.
- 차등, 트랜잭션 로그, 파일 그룹 백업 또는 복원이 불가능하므로 데이터 복구에 지장이 없습니다. Amazon RDS를 사용하면 예약된 인스턴스 스냅샷을 생성할 수 있으며 해당 스냅샷은 35일 동안 계속 액세스할 수 있습니다. 지난 35일 동안 지정된 시간 5분 이내에 인스턴스를 복원할 수 있습니다.
- KMS로 암호화된 백업은 S3에서 온프레미스로 복원할 수 없습니다.
- 동일한 RDS 인스턴스에서 데이터베이스를 복원할 수 없습니다.
- TDE(Tabular Data Encryption) 사용 데이터베이스의 백업은 복원할 수 없습니다.
- 대상 RDS 인스턴스는 S3 버킷에 대한 액세스 권한이 필요합니다.
- RDS SQL Server 기본 백업 및 복원 명령을 실행하는 사용자 계정에는 적절한 권한이 있어야 합니다.
결론
이 블로그에서는 클라우드 대상에 데이터베이스를 백업하고 AWS RDS 인스턴스에 복원하는 방법을 보여주었습니다. RDS 인스턴스는 드라이브나 서버에 대한 액세스를 제공하지 않습니다. 핵심은 백업 파일을 AWS S3bucket으로 전송한 다음 거기에서 복원하는 것입니다.
이 문서의 또 다른 사용 사례는 데이터 가용성, 보안 및 성능 향상을 제공하는 AWSS3에 직접 SQL 백업을 저장하는 것입니다.Amazon S3는 99.999999999%(11 9s) 내구성을 위해 설계되었습니다. 이 접근 방식은 많은 하드 스토리지를 절약하여 데이터베이스 백업을 저장할 때 비용 효율적입니다.
피드백 탭을 사용하여 의견을 남기거나 질문하십시오.
전문가 관리, 관리 및 구성으로 환경 최적화
Rackspace의 애플리케이션 서비스(RAS) 전문가는 광범위한 애플리케이션 포트폴리오에서 다음과 같은 전문적이고 관리되는 서비스를 제공합니다.
- 전자상거래 및 디지털 경험 플랫폼
- 전사적 자원 관리(ERP)
- 비즈니스 인텔리전스
- Salesforce CRM(고객 관계 관리)
- 데이터베이스
- 이메일 호스팅 및 생산성
우리는 다음을 제공합니다:
- 편향 없는 전문성 :즉각적인 가치를 제공하는 기능에 중점을 두고 현대화 여정을 간소화하고 안내합니다.
- 광신적인 경험 ™:프로세스를 먼저 결합합니다. 기술 두 번째.®전담 기술 지원을 통한 접근 방식으로 포괄적인 솔루션 제공
- 타의 추종을 불허하는 포트폴리오 :광범위한 클라우드 경험을 적용하여 올바른 클라우드에서 올바른 기술을 선택하고 배포할 수 있도록 지원합니다.
- 민첩한 전달 :귀하의 여정에서 귀하를 만나고 귀하의 성공에 맞춰 귀하의 성공을 맞춥니다.
데이터베이스에 대해 자세히 알아보기
피드백 탭을 사용하여 의견을 작성하거나 질문하십시오. 저희와 대화를 시작할 수도 있습니다.