AWS

AWS DMS(Data Migration Service)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Aurora PostgreSQL ๋ฅผ AWS S3์— ๋‚ ์งœ ๊ธฐ์ค€์œผ๋กœ ํŒŒํ‹ฐ์…”๋‹ ํ•˜์—ฌ ์ ์žฌ

whistory 2023. 2. 23. 10:22
๋ฐ˜์‘ํ˜•

 

๐Ÿ’ก AWS DMS ๋ฅผ ์‚ฌ์šฉํ•ด Aurora PostgreSQL ์—์„œ AWS S3๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ ์žฌํ•ด๋ณธ๋‹ค.

     ์ดˆ๊ธฐ์ ์žฌ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ , ์ฆ๋ถ„(Transaction) ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ๋Š”
     ๋‚ ์งœ๋‹จ์œ„๋กœ ํŒŒํ‹ฐ์…”๋‹์„ ์ ์šฉํ•˜์—ฌ ์ ์žฌ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

 

 

 

AWS DMS(Data Migration Service) ๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ๋•Œ, ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋‰ด๋Š” ํฌ๊ฒŒ ์•„๋ž˜์™€ ๊ฐ™๋‹ค

- ๋ณต์ œ ์ธ์Šคํ„ด์Šค : ๋ณต์ œ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•œ VM

- ์—”๋“œํฌ์ธํŠธ : ์†Œ์Šค์™€ ํƒ€๊ฒŸ์„ ์„ค์ •

- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ…Œ์Šคํฌ : ์‹ค์ œ ๋ณต์ œ๊ฐ€ ์ˆ˜ํ–‰ ๋˜๋Š” ํ…Œ์Šคํฌ

 

์ˆœ์„œ๋กœ ์ž‘์—…์„ ๊ตฌ์„ฑํ•œ๋‹ค.

 

1. ๋ณต์ œ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ

VPC์™€ subnetgroup์„ ์ž˜ ์„ ํƒํ•˜์—ฌ ์ƒ์„ฑํ•œ๋‹ค.

์ƒ์„ฑ ์‹œ ‘ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค ๊ฐ€๋Šฅ’ ๊ฐ€ ์„ ํƒ๋˜์–ด์•ผ S3 ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

ํผ๋ธ”๋ฆญ ์—‘์„ธ์Šค ๊ธฐ๋Šฅ์„ ๋„๊ณ  S3์— ์ ‘๊ทผํ•˜๋ ค๋ฉด, VPC์˜ endpoint๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ VPC endpoint๋Š” ๊ณผ๊ธˆ์ด ๋ฐœ์ƒํ•˜์—ฌ ํ…Œ์ŠคํŠธ ๋‹จ๊ณ„์—์„œ๋Š” ์ œ์™ธํ•˜๊ณ  ๊ตฌ์„ฑํ•œ๋‹ค.

  • ์ƒ์„ฑ๋œ ํ™”๋ฉด

 

 


 

2. ์—”๋“œํฌ์ธํŠธ ์ƒ์„ฑ

 

  • ์†Œ์Šค / ๋Œ€์ƒ ์—”๋“œํฌ์ธํŠธ๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ƒ์„ฑํ•œ๋‹ค.

 

2.1 ์†Œ์Šค

๋ฐฉํ™”๋ฒฝ๊ณผ VPC๋งŒ ์ž˜ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉด, ์‰ฝ๊ฒŒ ์†Œ์Šค์— ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ ํ•˜๋‹ค.

[์—ฐ๊ฒฐ] ํƒญ์—์„œ [์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ] ๋ฅผ ์ง„ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

 

2.2 ๋Œ€์ƒ

๋Œ€์ƒ ์—”์ง„์„ S3๋กœ ์ง€์ •ํ•œ ํ›„ bucket ๊ณผ ํด๋” ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

  • ์—”๋“œํฌ์ธํŠธ ์„ค์ •
    • DataFormat : ์ €์žฅํ•  ํŒŒ์ผ ํฌ๋งท์„ ์„ค์ •
    • DatePartitionEnabled : ๋‚ ์งœ ๊ธฐ์ค€ ํŒŒํ‹ฐ์…˜ ์—ฌ๋ถ€ ์„ค์ •
    • DatePartitionSequence : ๋‚ ์งœ ๊ธฐ์ค€ ํŒŒํ‹ฐ์…˜ ๊ธฐ์ค€ ์„ค์ •

๋Œ€์ƒ ์—”๋“œํฌ์ธํŠธ ๋˜ํ•œ ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.

 

 

 


 

 

3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํƒœ์Šคํฌ

์ˆ˜ํ–‰๋  job(task)๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

 

์ƒ์„ฑํ•  ๋•Œ,

์†Œ์Šค์™€ ๋Œ€์ƒ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์„ ํƒํ•˜๊ณ ,

๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์œ ํ˜•์„ ์„ ํƒํ•œ๋‹ค.

 

๊ธฐ์กด ๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ ์ดˆ๊ธฐ์ ์žฌ์ด๊ณ ,

๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋งŒ ๋ณต์ œ๋Š” CDC ์ด๋‹ค.

 

 

  • ํ…Œ์ด๋ธ” ๋งคํ•‘

ํ•„์ˆ˜๋กœ ์ง„ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.

์†Œ์Šค์™€ ํƒ€๊ฒŸ์— ์–ด๋–ป๊ฒŒ ์ €์žฅ ํ• ์ง€๋ฅผ ์ง€์ •ํ•œ๋‹ค.

 

 

Sample

๊ธฐ๋ณธ์ ์œผ๋กœ ‘selection’ ์˜์—ญ์—์„œ ์Šคํ‚ค๋งˆ์™€ ํ…Œ์ด๋ธ” ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜๊ณ .

์•„๋ž˜์˜ ‘transformation’ ์˜์—ญ์—์„œ ‘add-column’ ์„ ํ†ตํ•ด cdc ํ•ด ์˜ฌ ๋•Œ, ์ถ”๊ฐ€๋กœ ๊ฐ€์ ธ์˜ฌ ์ •๋ณด๋“ค์„ ํ•จ๊ป˜ ๊ฐ€์ ธ์™€์ค€๋‹ค.

Using transformation rule expressions to define column content - AWS Database Migration Service

 

Using transformation rule expressions to define column content - AWS Database Migration Service

The following example transformation rule adds a new string column, emp_seniority, to the target table, employee. It uses the SQLite round function on the salary column, with a case condition to check if the salary equals or exceeds 20,000. If it does, the

docs.aws.amazon.com

 

{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "042601413",
            "rule-name": "042601413",
            "object-locator": {
                "schema-name": "public",
                "table-name": "%"
            },
            "rule-action": "include",
            "filters": []
        },
        {
            "rule-type": "transformation",
            "rule-id": "2",
            "rule-name": "2",
            "rule-target": "column",
            "object-locator": {
                "schema-name": "%",
                "table-name": "%"
            },
            "rule-action": "add-column",
            "value": "transact_id",
            "expression": "$AR_H_STREAM_POSITION",
            "data-type": {
                "type": "string",
                "length": 50
            }
        },
        {
            "rule-type": "transformation",
            "rule-id": "3",
            "rule-name": "3",
            "rule-target": "column",
            "object-locator": {
                "schema-name": "%",
                "table-name": "%"
            },
            "rule-action": "add-column",
            "value": "transact_seq",
            "expression": "$AR_H_CHANGE_SEQ",
            "data-type": {
                "type": "string",
                "length": 50
            }
        }
    ]
}

 

 

 

 

  • S3์— ์ดˆ๊ธฐ์ ์žฌ๋œ ๋‚ด์šฉ

 

 

  • S3์— ๋‚ ์งœ ๊ธฐ์ค€์œผ๋กœ ํŒŒํ‹ฐ์…”๋‹ ๋˜์–ด CDC๋œ ๋‚ด์—ญ
  •  

๋ฐ˜์‘ํ˜•