Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스 또는 온프레미스 Microsoft SQL Server 인스턴스에서 Amazon Relational Database Service(Amazon RDS) for Microsoft SQL Server로 데이터베이스를 마이그레이션하려고 합니다.
해결 방법
데이터 마이그레이션 방법
기본 SQL Server 백업 및 복원
기본 백업 및 복원을 사용하여 온프레미스 또는 Amazon EC2 인스턴스에서 Amazon RDS for SQL Server 인스턴스로 SQL Server 데이터베이스를 마이그레이션할 수 있습니다. 이 작업을 수행하려면 다음 단계를 완료하십시오.
-
Amazon Simple Storage Service(Amazon S3) 버킷을 생성하여 소스 인스턴스의 백업을 저장합니다. Amazon S3 버킷은 Amazon RDS 인스턴스와 동일한 AWS 리전에 있어야 합니다.
-
버킷에 액세스하는 데 필요한 AWS Identity and Access Management(IAM) 역할을 생성합니다.
-
Amazon RDS for SQL Server 인스턴스와 연결된 옵션 그룹에 SQLSERVER_BACKUP_RESTORE 옵션을 추가합니다.
-
소스 인스턴스(온프레미스 또는 Amazon EC2)에서 백업을 생성한 다음, 1단계에서 생성한 Amazon S3 버킷으로 복사합니다.
-
다음 스크립트를 실행하여 백업을 Amazon RDS for SQL Server 인스턴스로 복원합니다.
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';
-
다음 스크립트를 실행하여 Amazon RDS 인스턴스 데이터베이스를 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;
참고: 차등 백업을 백업 및 복원할 수도 있습니다.
AWS Database Migration Service(AWS DMS)
다음 단계를 완료하십시오.
- SQL Server를 AWS DMS의 소스 또는 대상으로 사용하기 위한 사전 요구 사항 및 제한 사항을 확인합니다.
- AWS DMS 복제 인스턴스를 생성합니다.
- AWS DMS를 사용하여 소스 및 대상 엔드포인트를 생성합니다.
- 마이그레이션 작업을 생성합니다.
트랜잭션 복제
온프레미스 또는 EC2 SQL Server 인스턴스에서 Amazon RDS for SQL Server 인스턴스로의 트랜잭션 복제를 설정할 수 있습니다. 하지만 Amazon RDS for SQL Server 인스턴스를 구독자로만 설정할 수 있습니다. 또한 푸시 구독을 통해서만 온프레미스 또는 EC2 SQL Server 인스턴스를 게시자 또는 배포자로 만들 수 있습니다.
온프레미스 또는 Amazon EC2 SQL Server 인스턴스에서 트랜잭션 복제를 설정하려면 다음 지침을 참조하십시오.
백업 패키지(.bacpac) 파일
.bacpac 파일은 복사된 메타데이터 및 파일로 압축된 데이터로 구성됩니다. 약 200GB의 데이터베이스에는 .bacpack 파일을 사용하는 것이 좋습니다. 내보내기/가져오기 또는 SQLPackage.exe(명령줄) 유틸리티를 사용하여 .bacpac 파일을 생성할 수 있습니다. .bacpac 파일에 대한 자세한 내용은 bacpac 메서드를 사용하여 Azure SQL 데이터베이스에서 Amazon RDS for SQL Server로 SQL Server 데이터베이스 마이그레이션을 참조하십시오.
데이터 가져오기 방법
스크립트 생성 및 게시 마법사
데이터베이스가 1GB 미만인 경우 스크립트 생성 및 게시 마법사를 사용할 수 있습니다. 대규모 데이터베이스의 경우 가져오기 및 내보내기 마법사 또는 대량 복사 방법을 사용하여 데이터베이스의 스키마를 스크립팅할 수 있습니다. 스크립트 생성 및 게시 마법사에 대한 자세한 내용은 Microsoft SQL Server 설명서에서 방법: 스크립트 생성(SQL Server Management Studio)을 참조하십시오.
참고: 스크립팅 옵션 설정 페이지에서 특정 위치에 스크립트 저장, 고급을 선택해야 합니다. 고급 설정은 가져오기 및 내보내기 중에 테이블에 객체를 포함 또는 제외하기 위한 추가 옵션을 제공합니다.
가져오기 및 내보내기 마법사
가져오기 및 내보내기 마법사는 통합 패키지를 생성합니다. 통합 패키지는 온프레미스 또는 Amazon EC2 SQL Server 데이터베이스의 데이터를 Amazon RDS for SQL Server 인스턴스로 복사하는 데 사용됩니다. Amazon RDS 인스턴스에 복사하려는 특정 테이블을 필터링할 수 있습니다.
가져오기 및 내보내기 마법사에 대한 자세한 내용은 Microsoft SQL Server 설명서에서 방법: SQL Server 가져오기 및 내보내기 마법사 실행을 참조하십시오.
참고: 가져오기 및 내보내기 마법사를 실행할 때는 대상 Amazon RDS for SQL Server 인스턴스에 대해 다음과 같은 옵션을 선택해야 합니다.
- 서버 이름에 Amazon RDS DB 인스턴스의 엔드포인트 이름을 입력합니다.
- 인증 모드에서 SQL Server 인증을 선택합니다.
- 사용자 이름 및 암호에 Amazon RDS 인스턴스에서 생성한 기본 사용자를 입력합니다.
대량 복사 프로그램 유틸리티
대량 복사 프로그램(bcp)은 SQL Server 인스턴스 간에 데이터를 대량으로 복사하는 데 사용되는 명령줄 유틸리티입니다. bcp 유틸리티를 사용하여 대규모 데이터 세트를 SQL Server 인스턴스로 가져오거나 파일로 내보낼 수 있습니다.
다음은 IN 및 OUT 명령의 예입니다.
OUT: 테이블의 레코드를 파일로 내보내거나 덤프하려면 이 명령을 사용합니다.
bcp dbname.schema_name.table_name out C:\table_name.txt -n -S localhost -U username -P password -b 10000
위의 코드에는 다음 옵션이 포함되어 있습니다.
- -n: 대량 복사 시 복사할 데이터의 기본 데이터 유형을 사용하도록 지정합니다.
- -S: bcp 유틸리티가 연결되는 SQL Server 인스턴스를 지정합니다.
- -U: SQL Server 인스턴스에 로그인하기 위한 AWS 계정의 사용자 이름을 지정합니다.
- -P: -U를 통해 지정한 사용자의 암호를 지정합니다.
- -b: 가져온 데이터의 배치당 행 수를 지정합니다.
IN: 덤프 파일의 모든 레코드를 기존 테이블로 가져오려면 이 명령을 사용합니다. bcp 명령을 실행하기 전에 테이블을 생성해야 합니다.
bcp dbname.schema_name.table_name in C:\table_name.txt -n -S endpoint,port -U master_user_name -P master_user_password -b 10000
자세한 내용은 Microsoft SQL Server 설명서에서 bcp 유틸리티를 참조하십시오.