SQL ๋คํ”„ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚ด๋ณด๋‚ด๊ธฐ ๋ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

์ด ํŽ˜์ด์ง€์—์„œ๋Š” SQL ๋คํ”„ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์Šคํ„ด์Šค๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ณด๋‚ด๊ณ  ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ ์ „์—

๋‚ด๋ณด๋‚ด๊ธฐ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์ธ์Šคํ„ด์Šค๊ฐ€ ํ”„๋กœ๋น„์ €๋‹๋˜์ง€ ์•Š๋Š” ํ•œ ์ผ๋ฐ˜์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…์— ์ง€์žฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ถŒ์žฅ์‚ฌํ•ญ์€ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฐ ๋‚ด๋ณด๋‚ด๊ธฐ ๊ถŒ์žฅ์‚ฌํ•ญ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ฐ€์ ธ์˜ค๊ธฐ ์ž‘์—…์„ ์™„๋ฃŒํ•œ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

PostgreSQL์šฉ Cloud SQL์—์„œ ๋ฐ์ดํ„ฐ ๋‚ด๋ณด๋‚ด๊ธฐ

PostgreSQL์šฉ Cloud SQL์—์„œ ๋‚ด๋ณด๋‚ด๊ธฐ์— ํ•„์š”ํ•œ ์—ญํ•  ๋ฐ ๊ถŒํ•œ

๋ฐ์ดํ„ฐ๋ฅผ Cloud SQL์—์„œ Cloud Storage๋กœ ๋‚ด๋ณด๋‚ด๋ ค๋ฉด ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‹ค์Œ ์—ญํ•  ์ค‘ ํ•˜๋‚˜๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ Cloud SQL ์ธ์Šคํ„ด์Šค์˜ ์„œ๋น„์Šค ๊ณ„์ •์—๋Š” ๋‹ค์Œ ์—ญํ•  ์ค‘ ํ•˜๋‚˜๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • storage.objectAdmin Identity and Access Management(IAM) ์—ญํ• 
  • ๋‹ค์Œ ๊ถŒํ•œ์ด ํฌํ•จ๋œ ๋งž์ถค ์—ญํ• :
    • storage.objects.create
    • storage.objects.list(ํŒŒ์ผ์„ ๋™์‹œ์— ๋‚ด๋ณด๋‚ด๋Š” ๊ฒฝ์šฐ์—๋งŒ)
    • storage.objects.delete(ํŒŒ์ผ์„ ๋™์‹œ์— ๋‚ด๋ณด๋‚ด๋Š” ๊ฒฝ์šฐ์—๋งŒ)

IAM ์—ญํ• ์— ๋Œ€ํ•œ ๋„์›€๋ง์€ Identity and Access Management๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

PostgreSQL์šฉ Cloud SQL์—์„œ SQL ๋คํ”„ ํŒŒ์ผ๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ

Cloud SQL์„ ์‚ฌ์šฉํ•˜์—ฌGoogle Cloud ์ฝ˜์†”, gcloud CLI ๋˜๋Š” API์—์„œ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ๋Š” ๊ฒฐ๊ณผ ๋‚ด๋ณด๋‚ด๊ธฐ ํŒŒ์ผ์„ Cloud SQL๋กœ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ํ•„์š”ํ•œ ์˜ต์…˜๊ณผ ํ•จ๊ป˜ pg_dump ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Cloud SQL๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด SQL ๋คํ”„ ํŒŒ์ผ ํ˜•์‹์ด Cloud SQL์— ๋งž๊ฒŒ ์ง€์ •๋˜๋„๋ก ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ ๋‚ด๋ณด๋‚ด๊ธฐ์— ๋‚˜์™€ ์žˆ๋Š” ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Cloud SQL ์ธ์Šคํ„ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ Cloud Storage ๋ฒ„ํ‚ท์˜ SQL ๋คํ”„ ํŒŒ์ผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ Cloud SQL ์ธ์Šคํ„ด์Šค ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    Cloud SQL ์ธ์Šคํ„ด์Šค๋กœ ์ด๋™

  2. ์ธ์Šคํ„ด์Šค์˜ ๊ฐœ์š” ํŽ˜์ด์ง€๋ฅผ ์—ด๋ ค๋ฉด ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  4. ํŒŒ์ผ ํ˜•์‹ ์„น์…˜์—์„œ SQL์„ ํด๋ฆญํ•˜์—ฌ SQL ๋คํ”„ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  5. ๋‚ด๋ณด๋‚ผ ๋ฐ์ดํ„ฐ ์„น์…˜์—์„œ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚ด๋ณด๋‚ผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  6. ๋Œ€์ƒ ์„น์…˜์—์„œ ์ฐพ์•„๋ณด๊ธฐ๋ฅผ ์„ ํƒํ•˜์—ฌ ๋‚ด๋ณด๋‚ผ Cloud Storage ๋ฒ„ํ‚ท ๋˜๋Š” ํด๋”๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
  7. ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

gcloud

  1. Cloud Storage ๋ฒ„ํ‚ท์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  2. ๋‚ด๋ณด๋‚ผ Cloud SQL ์ธ์Šคํ„ด์Šค์˜ ์„œ๋น„์Šค ๊ณ„์ •์„ ์ฐพ์Šต๋‹ˆ๋‹ค. gcloud sql instances describe ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถœ๋ ฅ์—์„œ serviceAccountEmailAddress ํ•„๋“œ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.
    gcloud sql instances describe INSTANCE_NAME
      
  3. gcloud storage buckets add-iam-policy-binding์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค ๊ณ„์ •์— storage.objectAdmin IAM ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. IAM ๊ถŒํ•œ ์„ค์ •์— ๋Œ€ํ•œ ๋„์›€๋ง์€ IAM ๊ถŒํ•œ ์‚ฌ์šฉ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
  4. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ Cloud Storage ๋ฒ„ํ‚ท์œผ๋กœ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค.
    gcloud sql export sql INSTANCE_NAME gs://BUCKET_NAME/sqldumpfile.gz \
    --database=DATABASE_NAME \
    --offload
      

    export sql ๋ช…๋ น์–ด์—๋Š” ํŠธ๋ฆฌ๊ฑฐ ๋˜๋Š” ์ €์žฅ ํ”„๋กœ์‹œ์ €๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์ง€๋งŒ ๋ทฐ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ํŠธ๋ฆฌ๊ฑฐ ๋˜๋Š” ์ €์žฅ ํ”„๋กœ์‹œ์ €๋ฅผ ๋‚ด๋ณด๋‚ด๋ ค๋ฉด pg_dump ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    export sql ๋ช…๋ น์–ด ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ sql export sql ๋ช…๋ น์–ด ์ฐธ์กฐ ํŽ˜์ด์ง€๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

  5. ์ด์ „์— ์„ค์ •ํ•œ IAM ์—ญํ• ์„ ์œ ์ง€ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉด ์ง€๊ธˆ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค.

REST v1

  1. ๋‚ด๋ณด๋‚ด๊ธฐ์— ์‚ฌ์šฉํ•  ๋ฒ„ํ‚ท์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME

    ์ด ๋‹จ๊ณ„๋Š” ํ•„์ˆ˜ ์‚ฌํ•ญ์€ ์•„๋‹ˆ์ง€๋งŒ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์—ด์ง€ ์•Š์•„๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ ๊ทน ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.

  2. ์ธ์Šคํ„ด์Šค์— ๋ฒ„ํ‚ท์˜ legacyBucketWriter IAM ์—ญํ• ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. IAM ๊ถŒํ•œ ์„ค์ •์— ๋Œ€ํ•œ ๋„์›€๋ง์€ IAM ๊ถŒํ•œ ์‚ฌ์šฉ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
  3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค.

    ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • PROJECT_ID: ํ”„๋กœ์ ํŠธ ID
    • INSTANCE_ID: ์ธ์Šคํ„ด์Šค ID
    • BUCKET_NAME: Cloud Storage ๋ฒ„ํ‚ท ์ด๋ฆ„
    • PATH_TO_DUMP_FILE: SQL ๋คํ”„ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ
    • DATABASE_NAME_1: Cloud SQL ์ธ์Šคํ„ด์Šค ๋‚ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ด๋ฆ„
    • DATABASE_NAME_2: Cloud SQL ์ธ์Šคํ„ด์Šค ๋‚ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ด๋ฆ„

    HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export

    JSON ์š”์ฒญ ๋ณธ๋ฌธ:

    {
      "exportContext":
        {
           "fileType": "SQL",
           "uri": "gs://BUCKET_NAME/PATH_TO_DUMP_FILE",
           "databases": ["DATABASE_NAME"],
           "offload": TRUE | FALSE,
           "sqlExportOptions": {
            "clean": [TRUE|FALSE],
            "ifExists": [TRUE|FALSE]
           }
        }
     }
    

    ์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ JSON ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  4. ์ด์ „์— ์„ค์ •ํ•œ IAM ์—ญํ• ์„ ์œ ์ง€ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉด ์ง€๊ธˆ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
์ด ์š”์ฒญ์— ๋Œ€ํ•œ ์ „์ฒด ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก์€ instances:export ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

REST v1beta4

  1. ๋‚ด๋ณด๋‚ด๊ธฐ์— ์‚ฌ์šฉํ•  ๋ฒ„ํ‚ท์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
    

    ์ด ๋‹จ๊ณ„๋Š” ํ•„์ˆ˜ ์‚ฌํ•ญ์€ ์•„๋‹ˆ์ง€๋งŒ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์—ด์ง€ ์•Š์•„๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ ๊ทน ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.

  2. ์ธ์Šคํ„ด์Šค์— ๋ฒ„ํ‚ท์˜ storage.objectAdmin IAM ์—ญํ• ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. IAM ๊ถŒํ•œ ์„ค์ •์— ๋Œ€ํ•œ ๋„์›€๋ง์€ IAM ๊ถŒํ•œ ์‚ฌ์šฉ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
  3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค.

    ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • PROJECT_ID: ํ”„๋กœ์ ํŠธ ID
    • INSTANCE_ID: ์ธ์Šคํ„ด์Šค ID
    • BUCKET_NAME: Cloud Storage ๋ฒ„ํ‚ท ์ด๋ฆ„
    • PATH_TO_DUMP_FILE: SQL ๋คํ”„ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ
    • DATABASE_NAME_1: Cloud SQL ์ธ์Šคํ„ด์Šค ๋‚ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ด๋ฆ„
    • DATABASE_NAME_2: Cloud SQL ์ธ์Šคํ„ด์Šค ๋‚ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ด๋ฆ„

    HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/export

    JSON ์š”์ฒญ ๋ณธ๋ฌธ:

    {
       "exportContext":
         {
            "fileType": "SQL",
            "uri": "gs://BUCKET_NAME/PATH_TO_DUMP_FILE",
            "databases": ["DATABASE_NAME"],
            "offload": TRUE | FALSE,
            "sqlExportOptions": {
             "clean": [TRUE|FALSE],
             "ifExists": [TRUE|FALSE]
            }
         }
      }
    

    ์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ JSON ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  4. ์ด์ „์— ์„ค์ •ํ•œ IAM ์—ญํ• ์„ ์œ ์ง€ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉด ์ง€๊ธˆ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค.
์ด ์š”์ฒญ์— ๋Œ€ํ•œ ์ „์ฒด ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก์€ instances:export ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

PostgreSQL์šฉ Cloud SQL๋กœ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

PostgreSQL์šฉ Cloud SQL๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ์— ํ•„์š”ํ•œ ์—ญํ•  ๋ฐ ๊ถŒํ•œ

๋ฐ์ดํ„ฐ๋ฅผ Cloud Storage์—์„œ Cloud SQL๋กœ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‹ค์Œ ์—ญํ•  ์ค‘ ํ•˜๋‚˜๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ Cloud SQL ์ธ์Šคํ„ด์Šค์˜ ์„œ๋น„์Šค ๊ณ„์ •์—๋Š” ๋‹ค์Œ ์—ญํ•  ์ค‘ ํ•˜๋‚˜๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • storage.objectAdmin IAM ์—ญํ• 
  • ๋‹ค์Œ ๊ถŒํ•œ์ด ํฌํ•จ๋œ ๋งž์ถค ์—ญํ• :
    • storage.objects.get
    • storage.objects.list(๋™์‹œ์— ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒฝ์šฐ์—๋งŒ)

IAM ์—ญํ• ์— ๋Œ€ํ•œ ๋„์›€๋ง์€ Identity and Access Management๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

PostgreSQL์šฉ Cloud SQL๋กœ SQL ๋คํ”„ ํŒŒ์ผ ๊ฐ€์ ธ์˜ค๊ธฐ

SQL ํŒŒ์ผ์€ ์ผ๋ จ์˜ SQL ๋ช…๋ น์–ด๊ฐ€ ํฌํ•จ๋œ ์ผ๋ฐ˜ ํ…์ŠคํŠธ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ Cloud SQL ์ธ์Šคํ„ด์Šค ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    Cloud SQL ์ธ์Šคํ„ด์Šค๋กœ ์ด๋™

  2. ์ธ์Šคํ„ด์Šค์˜ ๊ฐœ์š” ํŽ˜์ด์ง€๋ฅผ ์—ด๋ ค๋ฉด ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  4. ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋Š” ํŒŒ์ผ ์„ ํƒ ์„น์…˜์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ์— ์‚ฌ์šฉํ•  ๋ฒ„ํ‚ท๊ณผ SQL ๋คํ”„ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ํŒŒ์ผ์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

    ์••์ถ•๋œ ํŒŒ์ผ(.gz) ๋˜๋Š” ์••์ถ•๋˜์ง€ ์•Š์€ ํŒŒ์ผ(.sql)์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  5. ํ˜•์‹์— SQL์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  6. ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฐ€์ ธ์˜ค๊ธฐ ์ „์— Cloud SQL์ด USE DATABASE ๋ฌธ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  7. ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•  ์‚ฌ์šฉ์ž๋ฅผ ์ง€์ •ํ•˜๋ ค๋ฉด ์‚ฌ์šฉ์ž๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ๊ฐ€์ ธ์˜ค๊ธฐ ํŒŒ์ผ์— ํŠน์ • ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋ฉด, ์ด ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์‚ฌ์šฉ์ž๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

  8. ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ํด๋ฆญํ•˜์—ฌ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

gcloud

  1. Cloud Storage ๋ฒ„ํ‚ท์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  2. ํŒŒ์ผ์„ ๋ฒ„ํ‚ท์— ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

    ๋ฒ„ํ‚ท์— ํŒŒ์ผ ์—…๋กœ๋“œํ•˜๊ธฐ์— ๋Œ€ํ•œ ๋„์›€๋ง์€ ๊ฐ์ฒด ์—…๋กœ๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  3. ๊ฐ€์ ธ์˜ค๊ธฐ์˜ ๋Œ€์ƒ ์ธ์Šคํ„ด์Šค๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
    gcloud sql instances describe INSTANCE_NAME
  4. serviceAccountEmailAddress ํ•„๋“œ๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  5. gcloud storage buckets add-iam-policy-binding์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒ„ํ‚ท์˜ ์„œ๋น„์Šค ๊ณ„์ •์— storage.objectAdmin IAM ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.
    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
      --member=serviceAccount:SERVICE-ACCOUNT \
      --role=roles/storage.objectAdmin
      
    IAM ๊ถŒํ•œ ์„ค์ •์— ๋Œ€ํ•œ ๋„์›€๋ง์€ IAM ๊ถŒํ•œ ์‚ฌ์šฉ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.
  6. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
    gcloud sql import sql INSTANCE_NAME gs://BUCKET_NAME/IMPORT_FILE_NAME \
    --database=DATABASE_NAME

    import sql ๋ช…๋ น์–ด ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ sql import sql ๋ช…๋ น์–ด ์ฐธ์กฐ ํŽ˜์ด์ง€๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

    ๋ช…๋ น์–ด๊ฐ€ ERROR_RDBMS์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•  ๊ฒฝ์šฐ ๊ถŒํ•œ์„ ๊ฒ€ํ† ํ•˜์„ธ์š”. ์ด ์˜ค๋ฅ˜๋Š” ๊ถŒํ•œ ๋ฌธ์ œ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ž์ฃผ ์žˆ์Šต๋‹ˆ๋‹ค.

  7. ์ด์ „์— ์„ค์ •ํ•œ IAM ๊ถŒํ•œ์„ ์œ ์ง€ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉด gcloud storage buckets remove-iam-policy-binding์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

REST v1

  1. SQL ๋คํ”„ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋งํฌ๋œ ์•ˆ๋‚ด์—์„œ๋Š” ๋คํ”„ ํŒŒ์ผ์ด Cloud SQL๊ณผ ํ˜ธํ™˜๋˜๋„๋ก ํ•˜๋Š” ํŠน์ • ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  2. Cloud Storage ๋ฒ„ํ‚ท์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  3. ํŒŒ์ผ์„ ๋ฒ„ํ‚ท์— ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

    ๋ฒ„ํ‚ท์— ํŒŒ์ผ ์—…๋กœ๋“œํ•˜๊ธฐ์— ๋Œ€ํ•œ ๋„์›€๋ง์€ ๊ฐ์ฒด ์—…๋กœ๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  4. ์ธ์Šคํ„ด์Šค์— ๋ฒ„ํ‚ท์˜ legacyBucketWriter ๋ฐ objectViewer IAM ์—ญํ• ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. IAM ๊ถŒํ•œ ์„ค์ •์— ๋Œ€ํ•œ ๋„์›€๋ง์€ IAM ๊ถŒํ•œ ์‚ฌ์šฉ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
  5. ๋คํ”„ ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

    ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • project-id: ํ”„๋กœ์ ํŠธ ID
    • instance-id: ์ธ์Šคํ„ด์Šค ID
    • bucket_name: Cloud Storage ๋ฒ„ํ‚ท ์ด๋ฆ„
    • path_to_sql_file: SQL ํŒŒ์ผ ๊ฒฝ๋กœ
    • database_name: Cloud SQL ์ธ์Šคํ„ด์Šค ๋‚ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ด๋ฆ„

    HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import

    JSON ์š”์ฒญ ๋ณธ๋ฌธ:

    {
     "importContext":
       {
          "fileType": "SQL",
          "uri": "gs://bucket_name/path_to_sql_file",
          "database": "database_name"
        }
    }
    
    

    ์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ JSON ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    ๊ฐ€์ ธ์˜ค๊ธฐ์— ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด importContext.importUser ์†์„ฑ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

    ์ด ์š”์ฒญ์„ ์œ„ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ „์ฒด ๋ชฉ๋ก์€ instances:import ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
  6. ์ด์ „์— ์„ค์ •ํ•œ IAM ๊ถŒํ•œ์„ ์œ ์ง€ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉด ์ง€๊ธˆ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

REST v1beta4

  1. SQL ๋คํ”„ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋งํฌ๋œ ์•ˆ๋‚ด์—์„œ๋Š” ๋คํ”„ ํŒŒ์ผ์ด Cloud SQL๊ณผ ํ˜ธํ™˜๋˜๋„๋ก ํ•˜๋Š” ํŠน์ • ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  2. Cloud Storage ๋ฒ„ํ‚ท์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  3. ํŒŒ์ผ์„ ๋ฒ„ํ‚ท์— ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

    ๋ฒ„ํ‚ท์— ํŒŒ์ผ ์—…๋กœ๋“œํ•˜๊ธฐ์— ๋Œ€ํ•œ ๋„์›€๋ง์€ ๊ฐ์ฒด ์—…๋กœ๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  4. ์ธ์Šคํ„ด์Šค์— ๋ฒ„ํ‚ท์˜ storage.objectAdmin IAM ์—ญํ• ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. IAM ๊ถŒํ•œ ์„ค์ •์— ๋Œ€ํ•œ ๋„์›€๋ง์€ IAM ๊ถŒํ•œ ์‚ฌ์šฉ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
  5. ๋คํ”„ ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

    ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • project-id: ํ”„๋กœ์ ํŠธ ID
    • instance-id: ์ธ์Šคํ„ด์Šค ID
    • bucket_name: Cloud Storage ๋ฒ„ํ‚ท ์ด๋ฆ„
    • path_to_sql_file: SQL ํŒŒ์ผ ๊ฒฝ๋กœ
    • database_name: Cloud SQL ์ธ์Šคํ„ด์Šค ๋‚ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ด๋ฆ„

    HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import

    JSON ์š”์ฒญ ๋ณธ๋ฌธ:

    {
     "importContext":
       {
          "fileType": "SQL",
          "uri": "gs://bucket_name/path_to_sql_file",
          "database": "database_name"
        }
    }
    
    

    ์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ JSON ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    ๊ฐ€์ ธ์˜ค๊ธฐ์— ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด importContext.importUser ์†์„ฑ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

    ์ด ์š”์ฒญ์„ ์œ„ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ „์ฒด ๋ชฉ๋ก์€ instances:import ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
  6. ์ด์ „์— ์„ค์ •ํ•œ IAM ๊ถŒํ•œ์„ ์œ ์ง€ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉด ์ง€๊ธˆ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„