Computer >> 컴퓨터 >  >> 프로그램 작성 >> 데이터 베이스

SQL Server 데이터베이스를 AWS RDS 인스턴스로 마이그레이션

이 블로그에서는 온프레미스(또는 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 인스턴스 생성에 대한 기본 지식이 있어야 합니다.

솔루션

다음 단계에서는 다음 섹션의 솔루션을 다룹니다.

  1. 로컬 서버에 데이터베이스를 백업하십시오.

  2. 백업 파일을 AWS S3 버킷에 복사합니다.

  3. 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'
SQL Server 데이터베이스를 AWS RDS 인스턴스로 마이그레이션

저장 프로시저에 제공된 매개변수에 유의하십시오. 다음 매개변수를 지정해야 합니다.

  • 복원할 데이터베이스의 이름입니다.
  • 백업 파일의 Amazon 리소스 이름(ARN)입니다. S3 객체의 경우 ARN은 여기에 표시된 형식을 따릅니다.

SQL Server는 복원 작업을 시작하고 TaskID를 할당합니다. . 다음 명령을 사용하여 작업 상태를 쉽게 추적할 수 있습니다.

EXEC  msdb.[dbo].[rds_task_status]  @db_name ='DestinationDBName'

TaskID를 사용할 수 있습니다. @db_name 대신 진행 상황 추적 .

SQL Server 데이터베이스를 AWS RDS 인스턴스로 마이그레이션

다음 사항에 유의하십시오.

  • 버킷 백업 파일 이름은 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(고객 관계 관리)
  • 데이터베이스
  • 이메일 호스팅 및 생산성

우리는 다음을 제공합니다:

  • 편향 없는 전문성 :즉각적인 가치를 제공하는 기능에 중점을 두고 현대화 여정을 간소화하고 안내합니다.
  • 광신적인 경험 ™:프로세스를 먼저 결합합니다. 기술 두 번째.®전담 기술 지원을 통한 접근 방식으로 포괄적인 솔루션 제공
  • 타의 추종을 불허하는 포트폴리오 :광범위한 클라우드 경험을 적용하여 올바른 클라우드에서 올바른 기술을 선택하고 배포할 수 있도록 지원합니다.
  • 민첩한 전달 :귀하의 여정에서 귀하를 만나고 귀하의 성공에 맞춰 귀하의 성공을 맞춥니다.

데이터베이스에 대해 자세히 알아보기

피드백 탭을 사용하여 의견을 작성하거나 질문하십시오. 저희와 대화를 시작할 수도 있습니다.