์ธ์Šคํ„ด์Šค ํด๋ก 

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

๊ฐœ์š”

Cloud SQL ์ธ์Šคํ„ด์Šค๋ฅผ ํด๋ก ํ•˜๋ฉด ์†Œ์Šค ์ธ์Šคํ„ด์Šค์˜ ๋ณต์‚ฌ๋ณธ์ธ ์ƒˆ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ƒˆ ์ธ์Šคํ„ด์Šค๋Š” ์†Œ์Šค ์ธ์Šคํ„ด์Šค์™€ ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ž…๋‹ˆ๋‹ค.

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ(FAQ)

์งˆ๋ฌธ ๋‹ต๋ณ€
ํด๋ก ์ด ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ฃผ๋‚˜์š”? ์•„๋‹ˆ์š”. ํด๋ก ์€ ์†Œ์Šค ์ธ์Šคํ„ด์Šค์˜ ์„ฑ๋Šฅ์—๋Š” ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋ฐฑ์—…์ด ์ƒˆ ์ธ์Šคํ„ด์Šค์— ๋ณต์‚ฌ๋˜๋‚˜์š”? ์•„๋‹ˆ์š”. ์ƒˆ ์ธ์Šคํ„ด์Šค๋Š” ์ƒˆ ์ž๋™ ๋ฐฑ์—…์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ˆ˜๋™ ๋ฐฑ์—…์€ ์†Œ์Šค ์ธ์Šคํ„ด์Šค์—์„œ ๋ณต์‚ฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ƒˆ ์ธ์Šคํ„ด์Šค์˜ IP ์ฃผ์†Œ ๋˜๋Š” ์ฃผ์†Œ๋Š” ๋™์ผํ•œ๊ฐ€์š”? ์•„๋‹ˆ์š”. ์ƒˆ ์ธ์Šคํ„ด์Šค์—๋Š” ์ƒˆ๋กœ์šด IP ์ฃผ์†Œ ๋˜๋Š” ์ฃผ์†Œ๊ฐ€ ์ง€์ •๋ฉ๋‹ˆ๋‹ค.
์ƒˆ ์ธ์Šคํ„ด์Šค์˜ ๊ตฌ์„ฑ ์„ค์ •์€ ๋™์ผํ•œ๊ฐ€์š”? ์˜ˆ. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ”Œ๋ž˜๊ทธ, ์—ฐ๊ฒฐ ์˜ต์…˜, ๋จธ์‹  ์œ ํ˜•, ์Šคํ† ๋ฆฌ์ง€, ๋ฉ”๋ชจ๋ฆฌ ์„ค์ • ๋“ฑ์˜ ๋™์ผํ•œ ์„ค์ •์ด ์ƒˆ ์ธ์Šคํ„ด์Šค์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
๋ณต์ œ๋ณธ์ด ์ƒˆ ์ธ์Šคํ„ด์Šค์— ๋ณต์‚ฌ๋˜๋‚˜์š”? ์•„๋‹ˆ์š”. ์ƒˆ ์ธ์Šคํ„ด์Šค์˜ ์ƒˆ ๋ณต์ œ๋ณธ์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋ณต์ œ๋ณธ์„ ํด๋ก ํ•  ์ˆ˜ ์žˆ๋‚˜์š”? ์•„๋‹ˆ์š”. ๋ณต์ œ๋ณธ์€ ํด๋ก ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์ด์ „ ์‹œ์ ์—์„œ ํด๋ก ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‚˜์š”? ์˜ˆ. point-in-time recovery๋Š” ํด๋ก ํ•˜์—ฌ ์ด์ „ ์‹œ์ ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์†์ƒ์ด ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์†Œ์Šค ์ธ์Šคํ„ด์Šค์˜ ์œ ์ง€๋ณด์ˆ˜ ์„ค์ •์ด ํด๋ก  ์ธ์Šคํ„ด์Šค์— ์ž๋™์œผ๋กœ ๋ณต์‚ฌ๋˜๋‚˜์š”? ์•„๋‹ˆ์š”. ํด๋ก  ์ธ์Šคํ„ด์Šค์˜ ์œ ์ง€๋ณด์ˆ˜ ์„ค์ •์„ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
ํด๋ก ์ด์—ˆ๋˜ ์ธ์Šคํ„ด์Šค๋ฅผ ํด๋ก ํ•  ์ˆ˜ ์žˆ๋‚˜์š”? ์˜ˆ. ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค์—์„œ ํด๋ก ๋œ ์ธ์Šคํ„ด์Šค๋Š” ํด๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž๊ฐ€ ์ƒˆ ์ธ์Šคํ„ด์Šค์— ๋ณต์‚ฌ๋˜๋‚˜์š”? ์˜ˆ. ํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ๋ณต์‚ฌ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋‹ค์‹œ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ธ์Šคํ„ด์Šค ํด๋ก 

Google Cloud ์ฝ˜์†”, gcloud CLI, Terraform ๋˜๋Š” API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์Šคํ„ด์Šค๋ฅผ ํด๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

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

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

  2. ํด๋ก ํ•  ์ธ์Šคํ„ด์Šค์˜ ํ–‰์„ ์ฐพ์Šต๋‹ˆ๋‹ค.
  3. ์ž‘์—… ์—ด์—์„œ ์ถ”๊ฐ€ ์ž‘์—… ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  4. ํด๋ก  ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  5. ํด๋ก  ๋งŒ๋“ค๊ธฐ ํŽ˜์ด์ง€์—์„œ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ธ์Šคํ„ด์Šค ID๋ฅผ ์—…๋ฐ์ดํŠธํ•œ ํ›„ ์ธ์Šคํ„ด์Šค์˜ ํ˜„์žฌ ์ƒํƒœ ํด๋ก ์„ ์„ ํƒํ•œ ์ƒํƒœ๋กœ ๋‘๊ณ  ํด๋ก  ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ํด๋ก ์ด ์ดˆ๊ธฐํ™”๋˜๋Š” ๋™์•ˆ ์ธ์Šคํ„ด์Šค ๋“ฑ๋ก ํŽ˜์ด์ง€๋กœ ๋Œ์•„์˜ต๋‹ˆ๋‹ค.

gcloud

์ธ์Šคํ„ด์Šค๋ฅผ ํด๋ก ํ•˜๋ ค๋ฉด gcloud sql instances clone ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

gcloud sql instances clone SOURCE_INSTANCE_NAME DESTINATION_INSTANCE_NAME \
--project PROJECT_ID \
--preferred-zone ZONE_NAME \
--preferred-secondary-zone SECONDARY_ZONE_NAME

๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • SOURCE_INSTANCE_NAME: ํด๋ก ํ•  Cloud SQL ์ธ์Šคํ„ด์Šค์˜ ์ด๋ฆ„
  • DESTINATION_INSTANCE_NAME: ํด๋ก ๋œ ์ธ์Šคํ„ด์Šค์˜ ์ด๋ฆ„
  • PROJECT_ID: ์†Œ์Šค ๋ฐ ๋Œ€์ƒ ์ธ์Šคํ„ด์Šค๊ฐ€ ํฌํ•จ๋œ Google Cloud ํ”„๋กœ์ ํŠธ์˜ ID ๋˜๋Š” ํ”„๋กœ์ ํŠธ ๋ฒˆํ˜ธ
  • ZONE_NAME: (์„ ํƒ์‚ฌํ•ญ) ๋Œ€์ƒ ์ธ์Šคํ„ด์Šค์˜ ๊ธฐ๋ณธ ์˜์—ญ ์ด๋ฆ„. ๋Œ€์ƒ ์ธ์Šคํ„ด์Šค๊ฐ€ ํด๋ก ํ•˜๋Š” Cloud SQL ์ธ์Šคํ„ด์Šค์™€ ๋‹ค๋ฅธ ๊ธฐ๋ณธ ์˜์—ญ์— ์žˆ๋„๋ก ํ•˜๋ ค๋ฉด ์ด ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ๋ฆฌ์ „ ์ธ์Šคํ„ด์Šค์˜ ๊ฒฝ์šฐ ์ด ์˜์—ญ์ด ๊ธฐ๋ณธ ์˜์—ญ์„ ๋Œ€์ฒดํ•˜์ง€๋งŒ ๋ณด์กฐ ์˜์—ญ์ด ์†Œ์Šค ์ธ์Šคํ„ด์Šค์™€ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
  • SECONDARY_ZONE_NAME: (์„ ํƒ์‚ฌํ•ญ) ๋Œ€์ƒ ์ธ์Šคํ„ด์Šค์˜ ๋ณด์กฐ ์˜์—ญ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ํด๋ก ํ•  ๋ฆฌ์ „ Cloud SQL ์ธ์Šคํ„ด์Šค์— ๋‹ค๋ฅธ ๋ณด์กฐ ์˜์—ญ์„ ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

--preferred-zone ๋ฐ --preferred-secondary-zone ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ์กฐ๊ฑด์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ ์˜์—ญ๊ณผ ๋ณด์กฐ ์˜์—ญ ๋ชจ๋‘ ์œ ํšจํ•œ ์˜์—ญ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‘ ์˜์—ญ ๋ชจ๋‘ ์†Œ์Šค ์ธ์Šคํ„ด์Šค์™€ ๋™์ผํ•œ ๋ฆฌ์ „์— ์†ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ ์˜์—ญ๊ณผ ๋ณด์กฐ ์˜์—ญ์€ ์„œ๋กœ ๋‹ฌ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜์—ญ ์ธ์Šคํ„ด์Šค์˜ ๊ฒฝ์šฐ --preferred-secondary-zone ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ธ์Šคํ„ด์Šค ํด๋ก  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.
  • --preferred-zone ๋˜๋Š” --preferred-secondary-zone ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ํด๋ก ๋œ ์ธ์Šคํ„ด์Šค์—๋Š” ์†Œ์Šค ์ธ์Šคํ„ด์Šค์™€ ๋™์ผํ•œ ๊ธฐ๋ณธ ์˜์—ญ๊ณผ ๋ณด์กฐ ์˜์—ญ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

gcloud sql instances clone ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด cloudsql.instances.clone ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. gcloud CLI ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud SQL ๊ถŒํ•œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

Terraform

์ธ์Šคํ„ด์Šค๋ฅผ ํด๋ก ํ•˜๋ ค๋ฉด Terraform ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

resource "google_sql_database_instance" "clone" {
  name             = "sqlserver-instance-clone-name"
  region           = "us-central1"
  database_version = "SQLSERVER_2017_STANDARD"
  root_password    = "INSERT-PASSWORD-HERE"
  clone {
    source_instance_name = google_sql_database_instance.source.id
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

๋ณ€๊ฒฝ์‚ฌํ•ญ ์ ์šฉ

ํ”„๋กœ์ ํŠธ์— Terraform ๊ตฌ์„ฑ์„ ์ ์šฉํ•˜๋ ค๋ฉด Google Cloud ๋‹ค์Œ ์„น์…˜์˜ ๋‹จ๊ณ„๋ฅผ ์™„๋ฃŒํ•˜์„ธ์š”.

Cloud Shell ์ค€๋น„

  1. Cloud Shell์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  2. Terraform ๊ตฌ์„ฑ์„ ์ ์šฉํ•  ๊ธฐ๋ณธ Google Cloud ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    ์ด ๋ช…๋ น์–ด๋Š” ํ”„๋กœ์ ํŠธ๋‹น ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰ํ•˜๋ฉด ๋˜๋ฉฐ ์–ด๋–ค ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ๋„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Terraform ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ ๋ช…์‹œ์  ๊ฐ’์„ ์„ค์ •ํ•˜๋ฉด ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์žฌ์ •์˜๋ฉ๋‹ˆ๋‹ค.

๋””๋ ‰ํ„ฐ๋ฆฌ ์ค€๋น„

๊ฐ Terraform ๊ตฌ์„ฑ ํŒŒ์ผ์—๋Š” ์ž์ฒด ๋””๋ ‰ํ„ฐ๋ฆฌ(๋ฃจํŠธ ๋ชจ๋“ˆ์ด๋ผ๊ณ ๋„ ํ•จ)๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. Cloud Shell์—์„œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  ํ•ด๋‹น ๋””๋ ‰ํ„ฐ๋ฆฌ ๋‚ด์— ์ƒˆ ํŒŒ์ผ์„ ๋งŒ๋“œ์„ธ์š”. ํŒŒ์ผ ์ด๋ฆ„์—๋Š” .tf ํ™•์žฅ์ž๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: main.tf). ์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ํŒŒ์ผ์„ main.tf๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. ํŠœํ† ๋ฆฌ์–ผ์„ ๋”ฐ๋ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ ์„น์…˜์ด๋‚˜ ๋‹จ๊ณ„์—์„œ ์ƒ˜ํ”Œ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ƒ˜ํ”Œ ์ฝ”๋“œ๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“  main.tf์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

    ํ•„์š”ํ•œ ๊ฒฝ์šฐ GitHub์—์„œ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Terraform ์Šค๋‹ˆํŽซ์ด ์—”๋“œ ํˆฌ ์—”๋“œ ์†”๋ฃจ์…˜์˜ ์ผ๋ถ€์ธ ๊ฒฝ์šฐ์— ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.

  3. ํ™˜๊ฒฝ์— ์ ์šฉํ•  ์ƒ˜ํ”Œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฒ€ํ† ํ•˜๊ณ  ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
  4. ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  5. Terraform์„ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ๋””๋ ‰ํ„ฐ๋ฆฌ๋‹น ํ•œ ๋ฒˆ๋งŒ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
    terraform init

    ์›ํ•˜๋Š” ๊ฒฝ์šฐ ์ตœ์‹  Google ๊ณต๊ธ‰์—…์ฒด ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด -upgrade ์˜ต์…˜์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

    terraform init -upgrade

๋ณ€๊ฒฝ์‚ฌํ•ญ ์ ์šฉ

  1. ๊ตฌ์„ฑ์„ ๊ฒ€ํ† ํ•˜๊ณ  Terraform์—์„œ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•  ๋ฆฌ์†Œ์Šค๊ฐ€ ์˜ˆ์ƒ๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    terraform plan

    ํ•„์š”์— ๋”ฐ๋ผ ๊ตฌ์„ฑ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

  2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํ”„๋กฌํ”„ํŠธ์— yes๋ฅผ ์ž…๋ ฅํ•˜์—ฌ Terraform ๊ตฌ์„ฑ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
    terraform apply

    Terraform์— '์ ์šฉ ์™„๋ฃŒ' ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

  3. ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ ค๋ฉด Google Cloud ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฝ๋‹ˆ๋‹ค. Google Cloud ์ฝ˜์†”์—์„œ UI์˜ ๋ฆฌ์†Œ์Šค๋กœ ์ด๋™ํ•˜์—ฌ Terraform์ด ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“ค์—ˆ๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ–ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ์‚ฌํ•ญ ์‚ญ์ œ

๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. Terraform ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ ์‚ญ์ œ ๋ณดํ˜ธ๋ฅผ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋ ค๋ฉด deletion_protection ์ธ์ˆ˜๋ฅผ false๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    deletion_protection =  "false"
  2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํ”„๋กฌํ”„ํŠธ์— yes๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์—…๋ฐ์ดํŠธ๋œ Terraform ๊ตฌ์„ฑ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
    terraform apply
  1. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํ”„๋กฌํ”„ํŠธ์— yes๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ด์ „์— Terraform ๊ตฌ์„ฑ์— ์ ์šฉ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

    terraform destroy

REST v1

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

  • PROJECT_ID: ์†Œ์Šค ๋ฐ ๋Œ€์ƒ ์ธ์Šคํ„ด์Šค๊ฐ€ ํฌํ•จ๋œ Google Cloud ํ”„๋กœ์ ํŠธ์˜ ID ๋˜๋Š” ํ”„๋กœ์ ํŠธ ๋ฒˆํ˜ธ
  • SOURCE_INSTANCE_NAME: ํด๋ก ํ•  Cloud SQL ์ธ์Šคํ„ด์Šค์˜ ์ด๋ฆ„
  • DESTINATION_INSTANCE_NAME: ํด๋ก ๋œ ์ธ์Šคํ„ด์Šค์˜ ์ด๋ฆ„
  • ZONE_NAME: (์„ ํƒ์‚ฌํ•ญ) ๋Œ€์ƒ ์ธ์Šคํ„ด์Šค์˜ ๊ธฐ๋ณธ ์˜์—ญ ์ด๋ฆ„. ๋Œ€์ƒ ์ธ์Šคํ„ด์Šค๊ฐ€ ํด๋ก ํ•˜๋Š” Cloud SQL ์ธ์Šคํ„ด์Šค์™€ ๋‹ค๋ฅธ ๊ธฐ๋ณธ ์˜์—ญ์— ์žˆ๋„๋ก ํ•˜๋ ค๋ฉด ์ด ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ๋ฆฌ์ „ ์ธ์Šคํ„ด์Šค์˜ ๊ฒฝ์šฐ ์ด ์˜์—ญ์ด ๊ธฐ๋ณธ ์˜์—ญ์„ ๋Œ€์ฒดํ•˜์ง€๋งŒ ๋ณด์กฐ ์˜์—ญ์ด ์†Œ์Šค ์ธ์Šคํ„ด์Šค์™€ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
  • SECONDARY_ZONE_NAME: (์„ ํƒ์‚ฌํ•ญ) ๋Œ€์ƒ ์ธ์Šคํ„ด์Šค์˜ ๋ณด์กฐ ์˜์—ญ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ํด๋ก ํ•  ๋ฆฌ์ „ Cloud SQL ์ธ์Šคํ„ด์Šค์— ๋‹ค๋ฅธ ๋ณด์กฐ ์˜์—ญ์„ ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

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

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone

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

{
  "cloneContext":
  {
    "destinationInstanceName": "DESTINATION_INSTANCE_NAME",
    "preferredZone": "ZONE_NAME",
    "preferredSecondaryZone": "SECONDARY_ZONE_NAME"
  }
}

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

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

preferredZone ๋ฐ preferredSecondaryZone ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ์กฐ๊ฑด์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ ์˜์—ญ๊ณผ ๋ณด์กฐ ์˜์—ญ ๋ชจ๋‘ ์œ ํšจํ•œ ์˜์—ญ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‘ ์˜์—ญ ๋ชจ๋‘ ์†Œ์Šค ์ธ์Šคํ„ด์Šค์™€ ๋™์ผํ•œ ๋ฆฌ์ „์— ์†ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ ์˜์—ญ๊ณผ ๋ณด์กฐ ์˜์—ญ์€ ์„œ๋กœ ๋‹ฌ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜์—ญ ์ธ์Šคํ„ด์Šค์˜ ๊ฒฝ์šฐ preferredSecondaryZone ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ธ์Šคํ„ด์Šค ํด๋ก  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.
  • preferredZone ๋˜๋Š” preferredSecondaryZone ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ํด๋ก ๋œ ์ธ์Šคํ„ด์Šค์—๋Š” ์†Œ์Šค ์ธ์Šคํ„ด์Šค์™€ ๋™์ผํ•œ ๊ธฐ๋ณธ ์˜์—ญ๊ณผ ๋ณด์กฐ ์˜์—ญ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

instances.clone API ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด cloudsql.instances.clone ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. API ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud SQL ๊ถŒํ•œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

REST v1beta4

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

  • PROJECT_ID: ์†Œ์Šค ๋ฐ ๋Œ€์ƒ ์ธ์Šคํ„ด์Šค๊ฐ€ ํฌํ•จ๋œ Google Cloud ํ”„๋กœ์ ํŠธ์˜ ID ๋˜๋Š” ํ”„๋กœ์ ํŠธ ๋ฒˆํ˜ธ
  • SOURCE_INSTANCE_NAME: ํด๋ก ํ•  Cloud SQL ์ธ์Šคํ„ด์Šค์˜ ์ด๋ฆ„
  • DESTINATION_INSTANCE_NAME: ํด๋ก ๋œ ์ธ์Šคํ„ด์Šค์˜ ์ด๋ฆ„
  • ZONE_NAME: (์„ ํƒ์‚ฌํ•ญ) ๋Œ€์ƒ ์ธ์Šคํ„ด์Šค์˜ ๊ธฐ๋ณธ ์˜์—ญ ์ด๋ฆ„. ๋Œ€์ƒ ์ธ์Šคํ„ด์Šค๊ฐ€ ํด๋ก ํ•˜๋Š” Cloud SQL ์ธ์Šคํ„ด์Šค์™€ ๋‹ค๋ฅธ ๊ธฐ๋ณธ ์˜์—ญ์— ์žˆ๋„๋ก ํ•˜๋ ค๋ฉด ์ด ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ๋ฆฌ์ „ ์ธ์Šคํ„ด์Šค์˜ ๊ฒฝ์šฐ ์ด ์˜์—ญ์ด ๊ธฐ๋ณธ ์˜์—ญ์„ ๋Œ€์ฒดํ•˜์ง€๋งŒ ๋ณด์กฐ ์˜์—ญ์ด ์†Œ์Šค ์ธ์Šคํ„ด์Šค์™€ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
  • SECONDARY_ZONE_NAME: (์„ ํƒ์‚ฌํ•ญ) ๋Œ€์ƒ ์ธ์Šคํ„ด์Šค์˜ ๋ณด์กฐ ์˜์—ญ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ํด๋ก ํ•  ๋ฆฌ์ „ Cloud SQL ์ธ์Šคํ„ด์Šค์— ๋‹ค๋ฅธ ๋ณด์กฐ ์˜์—ญ์„ ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

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

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/SOURCE_INSTANCE_NAME/clone

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

{
  "cloneContext":
  {
    "destinationInstanceName": "DESTINATION_INSTANCE_NAME",
    "preferredZone": "ZONE_NAME",
    "preferredSecondaryZone": "SECONDARY_ZONE_NAME"
  }
}

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

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

preferredZone ๋ฐ preferredSecondaryZone ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ์กฐ๊ฑด์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ ์˜์—ญ๊ณผ ๋ณด์กฐ ์˜์—ญ ๋ชจ๋‘ ์œ ํšจํ•œ ์˜์—ญ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‘ ์˜์—ญ ๋ชจ๋‘ ์†Œ์Šค ์ธ์Šคํ„ด์Šค์™€ ๋™์ผํ•œ ๋ฆฌ์ „์— ์†ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ ์˜์—ญ๊ณผ ๋ณด์กฐ ์˜์—ญ์€ ์„œ๋กœ ๋‹ฌ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜์—ญ ์ธ์Šคํ„ด์Šค์˜ ๊ฒฝ์šฐ preferredSecondaryZone ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ธ์Šคํ„ด์Šค ํด๋ก  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.
  • preferredZone ๋˜๋Š” preferredSecondaryZone ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ํด๋ก ๋œ ์ธ์Šคํ„ด์Šค์—๋Š” ์†Œ์Šค ์ธ์Šคํ„ด์Šค์™€ ๋™์ผํ•œ ๊ธฐ๋ณธ ์˜์—ญ๊ณผ ๋ณด์กฐ ์˜์—ญ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

instances.clone API ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด cloudsql.instances.clone ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. API ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud SQL ๊ถŒํ•œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‚ด๋ถ€ IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ธ์Šคํ„ด์Šค ํด๋ก 

Cloud SQL ์ธ์Šคํ„ด์Šค๊ฐ€ ๋‚ด๋ถ€ IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์„ ํƒ์ ์œผ๋กœ ํด๋ก ์˜ ์ƒˆ IP ์ฃผ์†Œ์— ํ• ๋‹น๋œ IP ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด google-managed-services-default์ž…๋‹ˆ๋‹ค.

gcloud

์ธ์Šคํ„ด์Šค๋ฅผ ํด๋ก ํ•˜๋˜, ์„ ํƒ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ํ• ๋‹น๋œ IP ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

gcloud sql instances clone SOURCE_INSTANCE_NAME TARGET_INSTANCE_NAME \
--allocated-ip-range-name ALLOCATED_IP_RANGE_NAME

gcloud sql instances clone ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์‚ฌ์šฉ์ž ๋˜๋Š” ์„œ๋น„์Šค ๊ณ„์ •์— cloudsql.instances.clone ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. gcloud CLI ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud SQL ๊ถŒํ•œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

REST v1

์ธ์Šคํ„ด์Šค๋ฅผ ํด๋ก ํ•˜๋˜, ์„ ํƒ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ํ• ๋‹น๋œ IP ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

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

  • project-id: ํ”„๋กœ์ ํŠธ ID์ž…๋‹ˆ๋‹ค.
  • source-instance-id: ์†Œ์Šค ์ธ์Šคํ„ด์Šค ID
  • target-instance-id: ๋Œ€์ƒ ์ธ์Šคํ„ด์Šค ID
  • allocated-ip-range-name: ํ• ๋‹น๋œ IP ๋ฒ”์œ„ ์ด๋ฆ„

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

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

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

{
  "cloneContext":
  {
    "destinationInstanceName": "target-instance-id",
    "allocatedIpRange": "allocated-ip-range-name"
  }
}

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

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

instances.clone API ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž ๋˜๋Š” ์„œ๋น„์Šค ๊ณ„์ •์—๋Š” cloudsql.instances.clone ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. API ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud SQL ๊ถŒํ•œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

REST v1beta4

์ธ์Šคํ„ด์Šค๋ฅผ ํด๋ก ํ•˜๋˜, ์„ ํƒ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ํ• ๋‹น๋œ IP ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

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

  • project-id: ํ”„๋กœ์ ํŠธ ID์ž…๋‹ˆ๋‹ค.
  • source-instance-id: ์†Œ์Šค ์ธ์Šคํ„ด์Šค ID
  • target-instance-id: ๋Œ€์ƒ ์ธ์Šคํ„ด์Šค ID
  • allocated-ip-range-name: ํ• ๋‹น๋œ IP ๋ฒ”์œ„ ์ด๋ฆ„

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

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

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

{
  "cloneContext":
  {
    "destinationInstanceName": "target-instance-id",
    "allocatedIpRange": "allocated-ip-range-name"
  }
}

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

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

instances.clone API ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž ๋˜๋Š” ์„œ๋น„์Šค ๊ณ„์ •์—๋Š” cloudsql.instances.clone ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. API ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud SQL ๊ถŒํ•œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

ํ• ๋‹น๋œ IP ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋‹ค์Œ ๋™์ž‘์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • ์†Œ์Šค ์ธ์Šคํ„ด์Šค๊ฐ€ ์ง€์ •๋œ ๋ฒ”์œ„๋กœ ์ƒ์„ฑ๋˜๋ฉด ํด๋ก ๋œ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋™์ผํ•œ ๋ฒ”์œ„๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  • ์†Œ์Šค ์ธ์Šคํ„ด์Šค๊ฐ€ ์ง€์ •๋œ ๋ฒ”์œ„๋กœ ์ƒ์„ฑ๋˜์ง€ ์•Š์œผ๋ฉด ํด๋ก ๋œ ์ธ์Šคํ„ด์Šค๋Š” ๋ฌด์ž‘์œ„ ๋ฒ”์œ„๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ ํ•ด๊ฒฐ

๋ฌธ์ œ ๋ฌธ์ œ ํ•ด๊ฒฐ
constraints/sql.restrictAuthorizedNetworks ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ํด๋ก ์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ํด๋ก  ์ž‘์—…์ด Authorized Networks ๊ตฌ์„ฑ์— ์˜ํ•ด ์ฐจ๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Authorized Networks๊ฐ€ Google Cloud ์ฝ˜์†”์˜ ์—ฐ๊ฒฐ ์„น์…˜์—์„œ ๊ณต๊ฐœ IP ์ฃผ์†Œ์— ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ ๋ณด์•ˆ ๊ณ ๋ ค์‚ฌํ•ญ์œผ๋กœ ์ธํ•ด ํด๋ก ์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•˜๋ฉด Cloud SQL ์ธ์Šคํ„ด์Šค์—์„œ ๋ชจ๋“  Authorized Networks ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด Authorized Networks ํ•ญ๋ชฉ ์—†์ด ๋ณต์ œ๋ณธ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€: Failed to create subnetwork. Couldn't find free blocks in allocated IP ranges. Please allocate new ranges for this service provider. Help Token: [help-token-id].

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

gcloud๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค๋ฅผ ํด๋ก ํ•˜๊ณ 
--allocated-ip-range-name ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐ’์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋น„๊ณต๊ฐœ IP๋กœ ์ธ์Šคํ„ด์Šค ํด๋ก ์„ ์ฐธ์กฐํ•˜์„ธ์š”.