Amazon S3를 통해 Amazon RDS for Db2로 Db2 데이터 마이그레이션 - Amazon Relational Database Service

Amazon S3를 통해 Amazon RDS for Db2로 Db2 데이터 마이그레이션

이 마이그레이션 접근 방식을 사용하면 먼저 단일 테이블의 데이터를 데이터 파일에 저장하고 Amazon S3 버킷에 저장합니다. 그런 다음 LOAD 명령을 사용하여 해당 데이터 파일의 데이터를 Amazon RDS for Db2 데이터베이스의 테이블로 로드합니다. Amazon S3 사용에 대한 자세한 내용은 Amazon RDS for Db2 DB 인스턴스와 Amazon S3 통합 섹션을 참조하세요.

Amazon S3에 데이터 저장

단일 테이블의 데이터를 Amazon S3에 저장하려면 데이터베이스 유틸리티를 사용하여 데이터베이스 관리 시스템(DBMS)에서 CSV 파일로 데이터를 추출하세요. 그런 다음 각 파일을 Amazon S3에 업로드합니다.

Amazon S3에 데이터 파일을 저장하려면 다음 AWS 구성 요소가 필요합니다.

  • 백업 파일을 저장할 Amazon S3 버킷: S3 버킷이 이미 있다면 해당 버킷을 사용할 수 있습니다. S3 버킷이 없는 경우 Amazon S3 사용 설명서의 버킷 생성을 참조하세요.

  • S3 버킷에 액세스하기 위한 IAM 역할: 이미 IAM 역할이 있다면 해당 역할을 사용할 수 있습니다. 역할이 없는 경우 2단계: IAM 역할 생성 및 IAM 정책 연결 섹션을 참조하세요.

  • IAM 역할에 연결된 신뢰 관계 및 권한이 포함된 IAM 정책: 자세한 내용은 1단계: IAM 정책 생성 섹션을 참조하세요.

  • RDS for Db2 DB 인스턴스에 추가된 IAM 역할: 자세한 내용은 3단계: RDS for Db2 DB 인스턴스에 IAM 역할 추가 섹션을 참조하세요.

RDS for Db2 테이블에 데이터 로드

Amazon S3에 데이터 파일을 저장한 후 이러한 파일의 데이터를 RDS for Db2 DB 인스턴스의 개별 테이블로 로드할 수 있습니다.

Db2 테이블 데이터를 RDS for Db2 DB 데이터베이스 테이블에 로드하려면
  1. RDS for Db2 DB 인스턴스의 마스터 사용자 이름과 마스터 암호를 사용하여 rdsadmin 데이터베이스에 연결합니다. 다음 예제에서 master_usernamemaster_password를 사용자 자체 정보로 대체합니다.

    db2 connect to rdsadmin user master_username using master_password
  2. 저장된 파일이 보관되는 Amazon S3 버킷으로 연결되는 스토리지 액세스 별칭을 카탈로그화합니다. 다음 단계에서 사용할 수 있도록 이 별칭의 이름을 적어 둡니다. 동일한 Amazon S3 버킷에 저장된 데이터 파일에서 여러 테이블을 로드하려는 경우 이 단계를 한 번만 수행하면 됩니다.

    다음 예제는 jorge_souza라는 사용자에게 amzn-s3-demo-bucket이라는 이름의 버킷에 대한 액세스 권한을 부여하는 my_s3_alias라는 별칭을 카탈로그화합니다.

    db2 "call rdsadmin.catalog_storage_access(?, 'my_s3_alias', 'amzn-s3-demo-bucket', 'USER', 'jorge_souza')"

    이 저장 절차에 대한 자세한 내용은 rdsadmin.catalog_storage_access 단원을 참조하세요.

  3. Amazon S3 버킷으로 연결되는 스토리지 액세스 별칭을 사용하여 LOAD 명령을 실행합니다.

    참고

    LOAD 명령에서 오류가 반환되는 경우 Amazon S3용 VPC 게이트웨이 엔드포인트를 생성하고 보안 그룹에 아웃바운드 규칙을 추가해야 할 수 있습니다. 자세한 내용은 파일 I/O 오류 단원을 참조하십시오.

    다음 예제에서는 my_s3_datafile.csv라는 데이터 파일의 데이터를 my_db2_table이라는 테이블로 로드합니다. 이 예제에서는 my_s3_alias라는 별칭이 연결된 Amazon S3 버킷에 데이터 파일이 있다고 가정합니다.

    db2 "load from db2remote://my_s3_alias//my_s3_datafile.csv of DEL insert into my_db2_table";

    다음 예제에서는 my_table1_export.ixf라는 데이터 파일의 LOB를 my_db2_table이라는 테이블로 로드합니다. 이 예제에서는 my_s3_alias라는 별칭이 연결된 Amazon S3 버킷에 데이터 파일이 있다고 가정합니다.

    db2 "call sysproc.admin_cmd('load from "db2remote://my_s3_alias//my_table1_export.ixf" of ixf lobs from "db2remote://my_s3_alias//" xml from "db2remote://my_s3_alias//" modified by lobsinfile implicitlyhiddeninclude identityoverride generatedoverride periodoverride transactionidoverride messages on server replace into "my_schema"."my_db2_table" nonrecoverable indexing mode incremental allow no access')"

    RDS for Db2 DB 인스턴스에서 테이블에 로드하려는 Amazon S3 버킷의 각 데이터 파일에 대해 이 단계를 반복합니다.

    LOAD 명령에 대한 자세한 내용은 LOAD 명령을 참조하세요.