Oracle 소스 데이터베이스에서 PostgreSQL용 Amazon Relation Database Service(Amazon RDS) 대상 데이터베이스로 데이터를 마이그레이션하려고 합니다. AWS Database Migration Service(AWS DMS)를 사용하여 Oracle에서 PostgreSQL로 데이터를 마이그레이션할 때 따를 수 있는 모범 사례는 무엇입니까?
해결 방법
Oracle에서 PostgreSQL 데이터베이스로 마이그레이션하기 위한 모범 사례
- 데이터 마이그레이션을 시작하기 전에 필요한 사전 요구 사항을 사용해 Oracle 소스 데이터베이스를 구성합니다..
- 다른 QA/DEV 데이터베이스 환경에서 동일한 프로덕션 데이터를 사용하여 마이그레이션을 테스트합니다. 결과에 따라 프로덕션 마이그레이션을 계속할 수 있습니다. 테스트 및 프로덕션 마이그레이션을 모두 수행할 때는 동일한 AWS DMS 구성을 사용해야 합니다.
- AWS DMS 인스턴스에 충분한 CPU, 메모리, 스토리지, IOPS를 프로비저닝하여 마이그레이션 중에 리소스 경합을 방지합니다. 자세한 내용은 마이그레이션에 적합한 AWS DMS 복제 인스턴스 선택 및 복제 인스턴스에 가장 적합한 크기 선택을 참조하십시오. 인스턴스 업그레이드와 관련된 비용에 대한 자세한 내용은 AWS 데이터베이스 마이그레이션 서비스 요금을 참조하십시오. 동일한 고려 사항으로 대상 Amazon RDS 인스턴스를 프로비저닝합니다.
- 원본 데이터베이스에 워크로드가 많은 테이블이 포함된 경우 테이블을 여러 AWS DMS 작업으로 분할합니다. 소스, 애플리케이션 트래픽 패턴, LOB 열 존재 여부에 따라 테이블을 분할합니다. 소스에서 테이블에 쓰기 트래픽이 높은 많은 LOB 열이 있는 경우 해당 테이블에 대해 별도의 태스크를 생성합니다.
- 병렬 전체 로드를 사용하여 과중한 워크로드의 마이그레이션 시간을 줄입니다. 자세한 정보는 선택한 테이블, 뷰 및 컬렉션에 병렬 로드 사용을 참조하세요.
- 마이그레이션 중에 대상 데이터베이스의 백업 및 데이터베이스별 로그(예: bin, general, audit 및 PG 쿼리 로그)를 해제합니다. 문제를 해결하려면 다시 켭니다.
- 마이그레이션 중에 대상 데이터베이스에서 트리거, 절차 기타 cron 작업, 이벤트 스케줄러를 해제합니다.
- 마이그레이션 중에는 대상 RDS 데이터베이스에서 다중 AZ 개념을 사용하지 마십시오.
- 마이그레이션을 수행할 때 대상에 다른 외부 클라이언트 트래픽을 적용하지 마세요.
- 복제의 데이터 캡처 변경(CDC) 단계를 시작하기 전에 대상 데이터베이스에 보조 인덱스를 추가합니다.
- 마이그레이션하기 전에 대상에서 외래 키를 끕니다. 이렇게 하려면 대상 추가 연결 속성(ECA)/엔드포인트 설정을 사용합니다. 자세한 내용은 PostgreSQL 데이터베이스를 AWS Database Migration Service의 대상으로 사용을 참조하세요.
afterConnectScript=SET session_replication_role='replica'
-
마이그레이션을 위해 제한적 또는 인라인 LOB와 같은 최적화된 LOB 설정을 사용합니다.
-
일괄 적용 CDC 방법을 사용하기 전에 기본 트랜잭션 CDC 적용을 사용하여 워크로드를 테스트합니다. 자세한 정보는 DMS 일괄 적용 기능을 사용하여 CDC 복제 성능을 개선하려면 어떻게 해야 합니까?를 참조하세요.
-
대상 엔드포인트 설정에서 executeTimeout의 값을 늘립니다. 이 값은 PostgreSQL 인스턴스에 대한 클라이언트 명령문 시간 제한을 설정합니다. 기본값은 60초입니다.
-
ID 열에 시퀀스를 사용하는 경우 대상에서 소스의 값보다 높게 값을 설정하십시오. 마이그레이션 전환 날짜에서 대상 값이 여전히 소스보다 높은지 확인합니다. 이 방법을 사용하면 마이그레이션 후 시퀀스 ID 충돌을 방지할 수 있습니다.
-
전체 로드 단계에서 성능을 향상시키려면 다음과 같은 설정을 사용합니다.
- MaxFullLoadSubTasks - 기본값은 8이고 최대값은 49입니다. 이 설정은 유용하지만 사용 가능한 리소스가 충분한지 확인합니다.
- CommitRate - 함께 전송할 수 있는 최대 레코드 수를 나타내려면 이 설정을 사용합니다.
- 전체 로드 단계의 전체 LOB 모드의 경우 - 소스에서 N개 행 = N개 삽입+대상의 N개 업데이트 = N 이벤트(여기서 CommitRate=N)
- 전체 로드 단계에서 제한된 LOB 모드의 경우 - CSV 파일에 N개의 행을 씁니다(여기서 CommitRate=N).
- 큰 테이블의 경우 CSV 파일의 크기를 늘립니다. 이는 대상 엔드포인트 설정에서 MaxFileSize가 제어합니다.
Oracle 데이터베이스를 PostgreSQL 데이터베이스로 마이그레이션
주: 이러한 단계를 계속하기 전에 사전 요구 사항에 설명된 대로 소스 Oracle 데이터베이스를 준비하십시오.
1. 로컬 시스템에 SQL 드라이버 및 AWS Schema Conversion Tool(AWS SCT)를 설치합니다.
2. Oracle 소스 및 PostgreSQL 대상 데이터베이스를 구성합니다.
3. AWS SCT를 사용하여 Oracle 스키마를 PostgreSQL로 변환합니다.
4. AWS DMS 복제 인스턴스를 생성합니다.
5. AWS DMS 소스 및 대상 엔드포인트를 생성합니다.
6. AWS DMS 작업을 생성한 다음 실행합니다.
7. 테이블 매핑에서 변형 규칙을 적용합니다. rule-action 파라미터를 convert-lowercase 값과 더합니다. Oracle 엔진은 기본적으로 모든 객체 이름을 대문자로 저장하지만 PostgreSQL은 모든 객체 이름을 소문자로 저장합니다.
8. 전체 로드 및 CDC AWS DMS 작업을 생성하여 데이터를 복제합니다. 전체 로드 단계가 완료되면 StopTaskCachedChangesNotApplied를 사용하여 작업을 중지합니다. 이제 보조 인덱스를 생성합니다.
9. PostgreSQL로 잘라냅니다.
관련 정보
Oracle 데이터베이스를 PostgreSQL로 마이그레이션
Oracle 데이터베이스를 PostgreSQL로 마이그레이션하는 방법