AWS DMS를 사용하여 Amazon RDS 또는 Aurora MySQL DB 인스턴스로 마이그레이션하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 2월 16일

최소한의 가동 중단과 간소화된 접근 방식을 갖춘 데이터베이스 마이그레이션 전략이 필요합니다. AWS Database Migration Service(AWS DMS)를 사용하여 Amazon Relational Database Service(Amazon RDS) 또는 Amazon Aurora MySQL DB 인스턴스로 마이그레이션하려면 어떻게 해야 합니까?

간략한 설명

참고: 동종 마이그레이션할 경우 가능하다면 엔진의 고유 도구(MySQL 덤프 또는 MySQL 복제)를 사용하십시오.

AWS DMS를 사용하여 Amazon RDS 또는 프로비저닝된 Aurora MySQL DB 인스턴스로 마이그레이션하려면 다음을 수행하세요.

  • 복제 인스턴스 생성
  • 대상 및 소스 엔드포인트 생성
  • 소스 엔드포인트 스키마 새로 고침
  • 마이그레이션 태스크 생성
  • 마이그레이션 태스크 모니터링

해결 방법

참고: AWS DMS는 테이블 데이터를 마이그레이션하기 전에 필요할 경우 대상에 기본 키를 포함하는 테이블만 생성합니다. 전체 대상 스키마를 생성하려면 AWS Schema Conversion Tool을 사용하세요. 자세한 내용은 스키마 변환을 참조하세요.

(선택 사항) Amazon CloudWatch를 사용하여 로깅 활성화

Amazon CloudWatch Logs는 마이그레이션할 때 잠재적인 문제를 경고해 줍니다. 자세한 내용은 Amazon CloudWatch를 사용하여 복제본 작업 모니터링을 참조하세요.

복제 인스턴스 생성

  1. AWS DMS 콘솔을 열고 탐색 창에서 [복제 인스턴스(Replication instances)]를 선택합니다.
  2. [복제 인스턴스 생성(Create replication instance)]을 선택합니다.
  3. 복제 인스턴스 이름, 설명, 인스턴스 클래스, Amazon Virtual Private Cloud(Amazon VPC) 및 다중 AZ 기본 설정을 입력합니다.
    참조: 해당 마이그레이션 워크로드에 충분한 인스턴스 클래스를 선택하세요. 인스턴스가 워크로드에 충분하지 않은 경우 나중에 복제 인스턴스를 수정할 수 있습니다.
  4. 고급 단원에서 VPC 보안 그룹을 선택하거나, 기본 옵션을 선택합니다.
  5. [복제 인스턴스 생성(Create replication instance)]을 선택합니다.

대상 및 소스 엔드포인트 생성

  1. AWS DMS 콘솔을 열고 탐색 창에서 [엔드포인트(Endpoints)]를 선택합니다.
  2. [엔드포인트 생성(create endpoint)]을 선택하여 소스 및 대상 데이터베이스를 생성합니다.
  3. [엔드포인트 유형]에서 [소스]를 선택합니다.
  4. Amazon S3를 소스로 사용하는 경우 서버 이름, 포트, SSL 모드 또는 Amazon Simple Storage Service(Amazon S3) 버킷 이름과 같은 엔드포인트의 엔진 관련 정보를 입력합니다.
  5. [테스트 실행(Run Test)]을 선택합니다.
  6. 테스트가 완료되면 저장을 저장합니다.
  7. 3-6단계를 반복하고, [엔드포인트 유형(Endpoint type)]에서 [대상(Target)]을 선택합니다.
    참고: 대상소스 모두에 대해 이 단계를 완료해야 합니다.

소스 엔드포인트 스키마 새로 고침

  1. AWS DMS 콘솔을 열고 탐색 창에서 [엔드포인트(Endpoints)]를 선택합니다.
  2. 소스 엔드포인트를 선택하고 [스키마 새로 고침]을 선택합니다.
  3. [스키마 새로 고침]을 선택합니다.
    참고: 소스를 새로 고쳐야 AWS DMS 태스크를 생성할 때 소스 스키마가 테이블 매핑에 나타납니다.

마이그레이션 태스크 생성

  1. AWS DMS 콘솔을 열고 탐색 창에서 [데이터베이스 마이그레이션 태스크(Database migration tasks)]를 선택합니다.
  2. [태스크 생성(Create task)]을 선택합니다.
  3. [태스크 식별자(Task identifier)], [복제 인스턴스(Replication instance)], [소스 데이터베이스 엔드포인트(Source database endpoint)], [대상 데이터베이스 엔드포인트(Target database endpoint)] 및 [마이그레이션 유형(Migration type)]을 지정합니다. 다음과 같은 마이그레이션 유형 중 하나를 선택합니다.
    기존 데이터만 마이그레이션 - 일회성 마이그레이션에는 이 마이그레이션 유형을 사용합니다.
    [기존 데이터를 마이그레이션하고 지속적 변경 사항 복제] – 이 마이그레이션 유형을 사용하면 가동 중지 시간을 최소화하면서 대규모 데이터베이스를 AWS 클라우드로 마이그레이션할 수 있습니다.
    [지속적 복제 변경 사항 마이그레이션] – 기존 데이터를 이미 마이그레이션했고 소스 데이터베이스를 AWS 클라우드에서 호스팅되는 대상 MySQL 데이터베이스와 동기화하려는 경우 이 마이그레이션 유형을 사용합니다.
  4. [태스크 설정(Task Settings)] 섹션에서 필요에 따라 태스크를 수정합니다. 
  5. [테이블 매핑(Table mappings)] 섹션에서 [UI 안내(Guided UI)]를 선택합니다.
  6. [새 선택 규칙 추가(Add new selection rule)]를 선택하고 [스키마(Schema)] 및 [테이블 이름(Table name)]을 지정합니다.
    참고: 선택한 객체의 일부 또는 전부에 대한 소스 스키마, 테이블 또는 열 이름을 변경하거나 변환하려면 [변환 규칙(Transformation rules)] 섹션을 확장합니다. [새 변환 규칙 추가(Add new transformation rule)]를 선택합니다. 그런 다음 [대상], [스키마 이름] 및 [작업]을 선택합니다.
  7. 태스크 생성(Create task)을 선택합니다.

참고: LOB(Large Object) 열이 있는 경우 제한적 LOB 모드 권장합니다.. 자세한 내용은 AWS DMS 태스크의 원본 데이터베이스에 대한 LOB 지원 설정을 참조하세요.

마이그레이션 태스크 모니터링

  1. [태스크 모니터링(Task Monitoring)] 보기를 사용하여 마이그레이션 태스크를 모니터링합니다. 성공적으로 마이그레이션된 테이블과 마이그레이션이 진행 중인 테이블을 확인할 수 있습니다. 다음 메시지 유형에 주의하십시오.
    I - 정보 메시지를 나타냅니다.
    W - 경고를 나타냅니다.
    E - 데이터베이스 마이그레이션 중에 오류가 발생했음을 나타냅니다.
  2. 터미널을 통해 소스 및 대상 인스턴스에 연결하여 데이터베이스가 성공적으로 마이그레이션되었는지 확인합니다.

Oracle 마이그레이션

소스 데이터베이스로 Oracle을 사용할 경우 테이블이 지정한 대상 엔드포인트 사용자로 마이그레이션됩니다. 변환 규칙을 사용하여 Oracle 대상에 대한 스키마를 변경할 수 있습니다. 자세한 내용은 Oracle 대상에 대한 사용자 및 스키마 변경을 참조하세요.

MySQL 마이그레이션

MySQL에서 Amazon Aurora로 마이그레이션할 경우 가능한 경우 엔진 기본 도구를 사용합니다. 마이그레이션 과정에서 스키마와 테이블은 대상에 동일한 이름으로 마이그레이션됩니다. 테이블을 대상의 다른 스키마로 마이그레이션하려는 경우, 대상 데이터베이스에 새 스키마를 지정하는 매핑 규칙을 생성합니다. 

{
  "rules": [{
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "test",
        "table-name": "%"
      },
      "rule-action": "include"
    }, {
      "rule-type": "transformation",
      "rule-id": "2",
      "rule-name": "2",
      "rule-action": "rename",
      "rule-target": "schema",
      "object-locator": {
        "schema-name": "test"
      },
      "value": "newtest"
    }
  ]
}
로그를 검사하여 오류가 없는지 확인합니다.

새 대상 데이터베이스로 전환하기 전에 지연 시간을 모니터링하고, 소스 데이터베이스와 대상 데이터베이스의 데이터 수를 비교하세요. 자세한 내용은 마이그레이션 작업 문제 해결을 참조하세요.