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

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

SQL Server์—์„œ๋Š” Cloud SQL์—์„œ SQL ๋คํ”„ ํŒŒ์ผ๋กœ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

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

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

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

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

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

SQL Server์—์„œ๋Š” Cloud SQL์—์„œ SQL ๋คํ”„ ํŒŒ์ผ๋กœ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

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

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

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

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

  • storage.objectAdmin IAM ์—ญํ• 
  • ๋‹ค์Œ ๊ถŒํ•œ์ด ํฌํ•จ๋œ ์ปค์Šคํ…€ ์—ญํ• :
    • storage.objects.get
    • storage.objects.list(์ŠคํŠธ๋ผ์ดํ•‘๋œ ๊ฐ€์ ธ์˜ค๊ธฐ๋งŒ ํ•ด๋‹น)

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

SQL Server์šฉ Cloud SQL๋กœ 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. Cloud Storage ๋ฒ„ํ‚ท์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  2. ํŒŒ์ผ์„ ๋ฒ„ํ‚ท์— ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

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

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

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

    • 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 ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

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

REST v1beta4

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

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

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

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

    • 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 ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

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

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