

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon RDS for Oracle에서 Amazon RDS for MySQL로 마이그레이션
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql"></a>

*Jitender Kumar, Srini Ramaswamy, Neha Sharma, Amazon Web Services*

## 요약
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql-summary"></a>

이 패턴은 Amazon Web Services(AWS)에서 Oracle DB의 Amazon Relational Database Service(Amazon RDS) 인스턴스를 Amazon RDS for MySQL DB 인스턴스로 마이그레이션하는 방법을 설명합니다. 이 패턴에서는 AWS Database Migration Service(AWS DMS) 및 AWS Schema Conversion Tool(AWS SCT)을 사용합니다. 

이 패턴은 저장 프로시저의 마이그레이션을 처리하는 모범 사례를 제공합니다. 또한 애플리케이션 계층을 지원하기 위한 및 코드 변경 사항도 다룹니다.

## 사전 조건 및 제한 사항
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql-prereqs"></a>

**사전 조건 **
+ 활성 상태의 계정
+ Amazon RDS for Oracle 소스 데이터베이스
+ Amazon RDS for MySQL의 타겟 데이터베이스 소스 및 대상 데이터베이스는 동일한 가상 프라이빗 클라우드(VPC)에 있어야 합니다. 여러 VPC 사용하는 경우 또는 필요한 액세스 권한이 있어야 합니다.
+ 소스 및 타겟 데이터베이스, AWS SCT, 애플리케이션 서버, AWS DMS 간의 연결을 허용하는 보안 그룹
+ 원본 데이터베이스에서 AWS SCT를 실행하는 데 필요한 권한을 가진 사용자 계정
+ 추가 로깅이 활성화되어 소스 데이터베이스에서 AWS DMS를 실행할 수 있습니다.

**제한 사항 **
+ 원본 및 타겟 Amazon RDS 데이터베이스 크기 제한은 64TB입니다. Amazon RDS 크기 정보는 [AWS 설명서](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html)를 참조하세요.
+ Oracle은 데이터베이스 개체에 대해 대소문자를 구분하지 않지만 MySQL은 그렇지 않습니다. AWS SCT는 객체를 생성하는 동안 이 문제를 처리할 수 있습니다. 하지만 전체 대소문자 비민감성을 지원하려면 일부 수작업이 필요합니다.
+ 이 마이그레이션에서는 MySQL 확장을 사용하여 Oracle 네이티브 함수를 활성화하지 않습니다. AWS SCT가 대부분의 변환을 처리하지만 코드를 수동으로 변경하려면 몇 가지 작업이 필요합니다.
+ JDBC(Java Database Connectivity) 드라이버를 변경해야 합니다.

**제품 버전**
+ Amazon RDS for Oracle 12.2.0.1 이상. 현재 지원되는 RDS for Oracle 버전은 [AWS 설명서](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Concepts.database-versions.html)를 참조하세요.
+ Amazon RDS for MySQL 8.0.15 이상. 현재 지원되는 RDS for MySQL 버전은 [AWS 설명서](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Concepts.VersionMgmt.html)를 참조하세요.
+ AWS DMS 버전 3.3.0 이상. AWS DMS에서 지원되는 [소스 엔드포인트](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Sources.html) 및 [대상 엔드포인트](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Targets.html)에 대한 자세한 내용은 AWS 설명서를 참조하세요.
+ AWS SCT 버전 1.0.628 이상.  AWS 설명서의 [AWS SCT 소스 및 대상 엔드포인트 지원 매트릭스](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)를 참조하세요.

## 아키텍처
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql-architecture"></a>

**소스 기술 스택**
+ Amazon RDS for Oracle 자세한 내용은 [Oracle Database를 AWS DMS의 소스로 사용](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)을 참조하세요. 

**‬대상 기술 스택**
+ Amazon RDS for MySQL 자세한 내용은 [MySQL 호환 데이터베이스 사용를 AWS DMS의 대상으로 사용](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html)을 참조하세요.

**마이그레이션 아키텍처**

다음 다이어그램에서 AWS SCT는 Amazon RDS for Oracle 소스 데이터베이스에서 스키마 객체를 복사 및 변환하고 객체를 Amazon RDS for MySQL 대상 데이터베이스로 전송합니다. AWS DMS는 소스 데이터베이스에서 데이터를 복제하여 Amazon RDS for MySQL 인스턴스로 전송합니다.

![\[프라이빗 서브넷에 배포된 AWS SCT, AWS DMS 및 Amazon RDS.\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/images/pattern-img/e1efa7c2-47c1-4677-80bc-6b19250fc0d6/images/b54a8442-9ab9-4074-b8f6-a08f87fa2f52.jpeg)


## 도구
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql-tools"></a>
+ [AWS Data Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)를 사용하면 데이터 스토어를 AWS 클라우드로 마이그레이션하거나 클라우드와 온프레미스 설정 조합 간에 마이그레이션할 수 있습니다.
+ [Amazon Relational Database Service(RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html)는 AWS 클라우드에서 관계형 데이터베이스를 설정, 운영 및 조정하는 데 도움이 됩니다. 이 패턴에서는 [Amazon RDS for Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html) 및 [Amazon RDS for MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html)을 사용합니다.
+ [AWS Schema Conversion Tool(AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/Welcome.html)은 소스 데이터베이스 스키마와 대부분의 사용자 지정 코드를 대상 데이터베이스와 호환되는 형식으로 자동 변환하여 이기종 데이터베이스 마이그레이션을 지원합니다.

## 에픽
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql-epics"></a>

### 마이그레이션 준비
<a name="prepare-for-migration"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| 소스 및 대상 데이터베이스 버전과 엔진을 검증합니다. |  | DBA | 
|  대상 서버 인스턴스의 하드웨어 요구 사항을 파악합니다. |  | DBA, SysAdmin | 
| 스토리지 요구 사항(스토리지 유형 및 용량)을 식별합니다. |  | DBA, SysAdmin | 
| 적절한 인스턴스 유형(용량, 스토리지 특성, 네트워크 특성)을 선택합니다. |  | DBA, SysAdmin | 
| 소스 및 대상 데이터베이스의 네트워크 액세스 보안 요구 사항을 식별합니다. |  | DBA, SysAdmin  | 
| 애플리케이션 마이그레이션 전략을 선택합니다. | 전환 활동을 위해 전체 다운타임을 원하는지 아니면 부분적 다운타임을 원하는지 고려하세요. | DBA, SysAdmin, 애플리케이션 소유자 | 

### 인프라 구성
<a name="configure-infrastructure"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| VPC 및 서브넷을 생성합니다. |  | SysAdmin | 
| 보안 그룹 및 네트워크 액세스 제어 목록(ACL)을 생성합니다. |  | SysAdmin | 
| Amazon RDS for Oracle 인스턴스를 구성하고 시작합니다. |  | DBA, SysAdmin | 
| Amazon RDS for MySQL 인스턴스를 구성하고 시작합니다. |  | DBA, SysAdmin | 
| 코드 변환 검증을 위한 테스트 케이스를 준비하세요. | 이렇게 하면 변환된 코드의 유닛 테스트에 도움이 됩니다. | DBA, 개발자 | 
| AWS DMS 인스턴스를 구성합니다. |  |  | 
| AWS DMS에서 소스 및 타겟 엔드포인트를 구성합니다. |  |  | 

### 데이터 마이그레이션
<a name="migrate-data"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| AWS SCT를 사용하여 타겟 데이터베이스 스크립트를 생성합니다. | AWS SCT에서 변환한 코드의 정확성을 확인하세요. 일부 수동 작업이 필요할 수 있습니다. | DBA, 개발자 | 
| AWS SCT에서는 '대소문자 구분 안 함' 설정을 선택합니다. | AWS SCT에서 프로젝트 설정, 타겟 대소문자 구분, 대소문자 구분을 선택합니다. | DBA, 개발자 | 
| AWS SCT에서는 Oracle 네이티브 함수를 사용하지 않도록 선택하세요. | 프로젝트 설정에서 TO\$1CHAR/TO\$1NUMBER/TO\$1DATE 함수를 확인하세요. | DBA, 개발자 | 
| 'sql%not found' 코드를 변경합니다. | 코드를 수동으로 변환해야 할 수도 있습니다. |  | 
| 저장 프로시저의 테이블 및 개체에 대한 쿼리(소문자 쿼리 사용). |  | DBA, 개발자 | 
| 모든 변경이 이루어진 후 기본 스크립트를 만든 다음 타겟 데이터베이스에 기본 스크립트를 배포합니다. |  | DBA, 개발자 | 
| 샘플 데이터를 사용하여 저장된 프로시저와 애플리케이션 직접 호출을 유닛 테스트합니다. |  |  | 
| 유닛 테스트 중에 생성된 데이터를 정리합니다. |  | DBA, 개발자 | 
| 타겟 데이터베이스에 외래 키 제약 조건을 삭제하세요. | 이 단계는 초기 데이터를 로드하는 데 필요합니다. 외래 키 제약 조건을 삭제하지 않으려면 기본 및 보조 테이블 전용 데이터에 대한 마이그레이션 작업을 만들어야 합니다. | DBA, 개발자 | 
| 타겟 데이터베이스에 프라이머리 키와 고유 키를 삭제합니다. | 이 단계를 수행하면 초기 로드 성능이 향상됩니다. | DBA, 개발자 | 
| 소스 데이터베이스에서 추가 로깅을 활성화합니다. |  | DBA | 
| AWS DMS에서 초기 로드를 위한 마이그레이션 작업을 생성한 다음 실행합니다. | 기존 데이터 마이그레이션 옵션을 선택합니다. | DBA | 
| 프라이머리 키와 외래 키를 타겟 데이터베이스에 추가합니다. | 초기 로드 후 제약 조건을 추가해야 합니다. | DBA, 개발자 | 
| 지속적인 복제를 위한 마이그레이션 작업을 생성합니다. | 지속적인 복제를 통해 타겟 데이터베이스를 원본 데이터베이스와 동기화합니다. | DBA | 

### 애플리케이션 마이그레이션
<a name="migrate-applications"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| Oracle 네이티브 함수를 MySQL 네이티브 함수로 대체하세요. |  | 앱 소유자 | 
| SQL 쿼리의 데이터베이스 개체에는 소문자만 사용해야 합니다. |  | DBA, SysAdmin, 애플리케이션 소유자 | 

### 타겟 데이터베이스로 전환
<a name="cut-over-to-the-target-database"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| 애플리케이션 서버를 종료합니다. |  | 앱 소유자 | 
| 소스 및 대상 데이터베이스가 동기화되어 있는지 검증합니다. |  | DBA, 앱 소유자 | 
| Amazon RDS for Oracle DB 인스턴스를 중지합니다. |  | DBA | 
| 마이그레이션 작업을 중지합니다. | 이전 단계를 완료하면 자동으로 중지됩니다. | DBA | 
| JDBC 연결을 Oracle에서 MySQL로 변경합니다. |  | 앱 소유자, DBA | 
| 애플리케이션을 시작합니다. |  | DBA, SysAdmin, 애플리케이션 소유자 | 

### 프로젝트 닫기
<a name="close-the-project"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| 프로젝트 문서를 검토하고 검증하세요. |  | DBA, SysAdmin | 
| 마이그레이션 시간, 수동 작업과 도구 작업의 비율, 비용 절감 등에 대한 지표를 수집하세요. |  | DBA, SysAdmin | 
| AWS DMS 인스턴스를 중지하고 삭제합니다. |  | DBA | 
| 원본 및 대상 엔드포인트를 제거합니다. |  | DBA | 
| 마이그레이션 작업을 제거합니다. |  | DBA | 
| Amazon RDS for Oracle DB 인스턴스의 스냅샷을 생성합니다. |  | DBA | 
| Amazon RDS for Oracle DB 인스턴스를 삭제합니다. |  | DBA | 
| 사용한 다른 임시 AWS 리소스를 종료하고 삭제합니다. |  | DBA, SysAdmin | 
| 프로젝트를 종료하고 피드백을 제공하세요. |  | DBA | 

## 관련 리소스
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql-resources"></a>
+ [AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)
+ [AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/Welcome.html)
+ [Amazon RDS 요금 책정](https://aws.amazon.com/rds/pricing/)
+ [AWS DMS 시작하기](https://aws.amazon.com/dms/getting-started/)
+ [Amazon RDS 시작](https://aws.amazon.com/rds/getting-started/)