BLOG

AWS Database Migration Service를 사용하여 PostgreSQL 10의 네이티브 파티션된 테이블로 마이그레이션하기
작성일: 2018-09-19

저희는 AWS DMS (Database Migration Service) 버전 2.4.3을 소개하게 된 것을 기쁘게 생각합니다. PostgreSQL 10의 네이티브 파티션된 테이블로 데이터를 마이그레이션 할 수 있도록 지원합니다.

이 글에서는 AWS DMS 버전 2.4.3을 사용하여 Oracle 파티션된 테이블에서 PostgreSQL 10 네이티브 파티션된 테이블로 데이터를 마이그레이션 하는 방법에 대해 설명합니다. 특별한 구성을 사용하지 않고도 할 수 있습니다. AWS DMS와 병렬로 파티션된 테이블에 대한 스키마 변환을 수행하려면 이 변환을 지원하는 AWS SCT (스키마 변환 도구)로 작업 할 수 있습니다.

 

PostgreSQL 파티셔닝

파티셔닝은 논리적으로 하나의 큰 테이블을 더 작은 물리적 조각으로 분할하는 것을 의미합니다. 파티셔닝은 여러 가지 이점을 제공합니다.

AWS DMS를 사용하여 글에서 설명한대로 파티션된 테이블로 마이그레이션하기 전에 PostgreSQL의 파티션된 테이블을 알고 있어야 합니다. PostgreSQL은 버전 10에서 네이티브 파티션 지원이 가능합니다.

다음은 Oracle 파티션 테이블에서 PostgreSQL 10 네이티브 파티션된 테이블로 데이터를 마이그레이션하는 예제입니다. 소스 Oracle 테이블은 생성 날짜 열에 세 개의 파티션으로 작성됩니다. 모든 파티션은 해당 날짜 범위 값을 기반으로 데이터를 보유합니다.

 

1 단계 : 범위 파티션 기준을 사용하여 Oracle 파티션된 테이블 만들기

다음 코드 예제에서는 1 단계인 범위 파티션 조건을 사용하여 Oracle 파티션된 테이블을 만드는 방법을 보여줍니다

 

CREATE TABLE partition_schema.partition_test

       (id NUMBER(10) NOT NULL,

       data_value VARCHAR2(50),

       create_dt DATE DEFAULT sysdate

       )

PARTITION BY RANGE(create_dt) (

  partition p1 values less than (’01-JAN-2016′),

  partition p2 values less than (’01-JAN-2017′),

  partition p3 values less than (’01-JAN-2018′)

);

 

2 단계 : AWS SCT 또는 수동으로 PostgreSQL 파티션 테이블 만들기

다음 코드 예제는 2 단계인 PostgreSQL 파티션된 테이블을 만드는 방법을 보여줍니다.

 

CREATE TABLE IF NOT EXISTS partition_schema.partition_test(

id NUMERIC(38,0) NOT NULL,

data_value CHARACTER VARYING(25) NOT NULL,

create_date TIMESTAMP(6) WITHOUT TIME ZONE NOT NULL,

) PARTITION BY RANGE (create_date)

WITH (

OIDS=FALSE

);

 

다음 단계는 PostgreSQL 문서의 PostgreSQL 테이블 파티셔닝 항목을 참조하십시오.

 

3단계 : 파티션 만들기

다음 단계에서는 파티션을 만듭니다. 각 파티션의 정의는 상위 테이블의 파티션 방법과 파티션 키에 해당하는 경계를 지정해야 합니다. 다음 코드의 예제에서 이 단계를 보여줍니다.

 

CREATE TABLE partition_schema.PERIOD_2016 PARTITION OF partition_schema.partition_test

FOR VALUES FROM (‘2015-01-01 00:00:00’) TO (‘2016-01-01 00:00:00’);

 

CREATE TABLE partition_schema.PERIOD_2017 PARTITION OF partition_schema.partition_test

FOR VALUES FROM (‘2016-01-01 00:00:00’) TO (‘2017-01-01 00:00:00’);

 

CREATE TABLE partition_schema.PERIOD_2018 PARTITION OF partition_schema.partition_test

FOR VALUES FROM (‘2017-01-01 00:00:00’) TO (‘2018-01-01 00:00:00’);

 

4 단계 : 키 열에 인덱스 만들기

4 단계에서 키 열에 인덱스를 만듭니다. 동시에 각 파티션에 대해 필요할 수 있는 다른 모든 인덱스를 만듭니다. 다음 코드 예제에서 이 단계를 보여줍니다.

 

CREATE index on partition_schema.PERIOD_2016 (id);

CREATE index on partition_schema.PERIOD_2017 (id);

CREATE index on partition_schema.PERIOD_2018 (id);

 

5 단계 : Oracle 파티션된 테이블에 레코드 삽입하기

다음으로 코드 예제와 같이 Oracle 파티션된 테이블에 레코드를 삽입합니다.

 

INSERT into partition_schema.partition_test VALUES (1,’data_1′,’2016-04-05′);

INSERT into partition_schema.partition_test VALUES (1,’data_2′,’2017-04-05′);

INSERT into partition_schema.partition_test VALUES (1,’data_3′,’2018-04-05′);

COMMIT;

 

6 단계 : Oracle 파티션 테이블에서 PostgreSQL 파티션 테이블로 마이그레이션 할 AWS DMS 작업 만들기

6단계에서 Oracle 파티션 테이블에서 PostgreSQL 파티션 테이블로 마이그레이션 할 AWS DMS 작업을 만듭니다. 이 작업을 위해서는 DMS 버전 2.4.3에서 다음 테이블 매핑을 사용하세요.

 

{

    “rules”: [

        {

            “rule-type”: “selection”,

            “rule-id”: “1”,

            “rule-name”: “1”,

            “object-locator”: {

                “schema-name”: “partition_schema “,

                “table-name”: “partition_test”

            },

            “rule-action”: “include”

        }

    ]

}

 

7단계 : 작업 완료 후, 테이블이 성공적으로 마이그레이션되었는지 확인하기

AWS DMS 작업이 완료된 후 테이블이 성공적으로 이전되었는지 확인하십시오. DMS 작업은 실패 없이 완료되어야 하며 데이터는 대상 PostgreSQL 10 파티션된 테이블로 올바르게 마이그레이션되어야합니다.

DMS가 대상 테이블의 적절한 파티션으로 레코드를 마이그레이션했는지 확인하기 위해 다음 쿼리를 실행할 수 있습니다.

 

SELECT * FROM ‘partition_schema’,’partition_test’;

 

SELECT * FROM partition_schema.PERIOD_2016;

SELECT * FROM partition_schema.PERIOD_2017;

SELECT * FROM partition_schema.PERIOD_2018;

 

AWS DMS 버전 2.4.3에서는 이 마이그레이션을 적절히 처리하기 위해 새로운 버전의 PostgreSQL 드라이버 psqlodbc-10.03.0000을 지원합니다.

앞에서 설명한 마이그레이션에서 DMS는 PostgreSQL 10 파티션 테이블 세부 정보를 검색하고 데이터를 올바르게 로드했습니다.

 

요약

이 글에서 설명했듯이 AWS DMS 버전 2.4.3은 이제 PostgreSQL 10 네이티브 파티션된 테이블로의 마이그레이션을 지원합니다. 자세한 내용은 AWS DMS User Guide를 참조하십시오.

 

원문 URL: https://aws.amazon.com/ko/blogs/database/migrate-to-native-partitioned-tables-in-postgresql-10-using-aws-database-migration-service/

** 메가존클라우드 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.