Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐ

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

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ์˜ ์ž‘๋™ ๋ฐฉ์‹์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์ •๋ณด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ฐœ์š”

Cloud SQL ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•  ๋•Œ๋Š” Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ

  • ๊ณต๊ฐœ ๋ฐ ๋น„๊ณต๊ฐœ IP ์—”๋“œํฌ์ธํŠธ์™€ ์—ฐ๋™
  • ์‚ฌ์šฉ์ž ๋˜๋Š” ์„œ๋น„์Šค ๊ณ„์ •์˜ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•œ ์—ฐ๊ฒฐ ๊ฒ€์ฆ
  • Cloud SQL ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•ด ์Šน์ธ๋œ SSL/TLS ๋ ˆ์ด์–ด์—์„œ ์—ฐ๊ฒฐ์„ ๋ž˜ํ•‘

์ผ๋ถ€ Google Cloud ์„œ๋น„์Šค ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ์„ ํฌํ•จํ•ด ์•”ํ˜ธํ™” ๋ฐ ์Šน์ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ณต๊ฐœ IP ๊ฒฝ๋กœ์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Google Kubernetes Engine์—์„œ ์‹คํ–‰๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ๋น ๋ฅธ ์‹œ์ž‘: Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์‚ฌ์šฉ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋กœ์ปฌ ๋จธ์‹  ๋˜๋Š” Compute Engine์—์„œ mysql ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์œ ๋ฌด์™€ ๊ด€๊ณ„์—†์ด ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

Cloud SQL ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ๋จผ์ € ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์„ธ์š”.

    • ์‚ฌ์šฉ์ž๋‚˜ ์„œ๋น„์Šค ๊ณ„์ •์˜ ๊ฒฝ์šฐ ๊ณ„์ •์— Cloud SQL ํด๋ผ์ด์–ธํŠธ ์—ญํ• ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด ์—ญํ• ์—๋Š” ์ฃผ ๊ตฌ์„ฑ์›์ด ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  Cloud SQL ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•˜๋„๋ก ์Šน์ธํ•˜๋Š” cloudsql.instances.connect ๊ถŒํ•œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

      IAM ํŽ˜์ด์ง€๋กœ ์ด๋™

    • ์›ํ•˜๋Š” ๊ฒฝ์šฐ ํŠน์ • Cloud SQL ์ธ์Šคํ„ด์Šค ํ•˜๋‚˜๋งŒ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๊ณ„์ •์— ๋ถ€์—ฌํ•˜๋Š” IAM ์กฐ๊ฑด์„ IAM ์ •์ฑ… ๋ฐ”์ธ๋”ฉ์— ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. Enable the Cloud SQL Admin API.

    Enable the API

  2. gcloud CLI๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
  3. (์„ ํƒ์‚ฌํ•ญ) Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ Docker ํด๋ผ์ด์–ธํŠธ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ๋‹ค์šด๋กœ๋“œ

Linux 64๋น„ํŠธ

  1. Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.18.0/cloud-sql-proxy.linux.amd64
  2. Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์‹คํ–‰ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    chmod +x cloud-sql-proxy

Linux 32๋น„ํŠธ

  1. Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.18.0/cloud-sql-proxy.linux.386
  2. curl ๋ช…๋ น์–ด๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์œผ๋ฉด sudo apt install curl์„ ์‹คํ–‰ํ•˜๊ณ  ๋‹ค์šด๋กœ๋“œ ๋ช…๋ น์–ด๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.
  3. Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์‹คํ–‰ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    chmod +x cloud-sql-proxy

macOS 64๋น„ํŠธ

  1. Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.18.0/cloud-sql-proxy.darwin.amd64
  2. Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์‹คํ–‰ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    chmod +x cloud-sql-proxy

Mac M1

  1. Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
      curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.18.0/cloud-sql-proxy.darwin.arm64
      
  2. Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์‹คํ–‰ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
      chmod +x cloud-sql-proxy
      

Windows 64๋น„ํŠธ

https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.18.0/cloud-sql-proxy.x64.exe๋ฅผ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์œผ๋กœ ํด๋ฆญํ•˜๊ณ  ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ๋งํฌ ์ €์žฅ์„ ์„ ํƒํ•˜์—ฌ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ ์ด๋ฆ„์„ cloud-sql-proxy.exe๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

Windows 32๋น„ํŠธ

https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.18.0/cloud-sql-proxy.x86.exe๋ฅผ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์œผ๋กœ ํด๋ฆญํ•˜๊ณ  ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ๋งํฌ ์ €์žฅ์„ ์„ ํƒํ•˜์—ฌ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ ์ด๋ฆ„์„ cloud-sql-proxy.exe๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ Docker ์ด๋ฏธ์ง€

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ์—๋Š” distroless, alpine, buster์™€ ๊ฐ™์€ ์„œ๋กœ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋Š” ์…ธ์ด ์—†๋Š” distroless๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์…ธ ๋˜๋Š” ๊ด€๋ จ ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•˜๋ฉด alpine ๋˜๋Š” buster๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ๋ช…๋ น์–ด๋กœ Docker๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์‹  ์ด๋ฏธ์ง€๋ฅผ ๋กœ์ปฌ ๋จธ์‹ ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.18.0

๊ธฐํƒ€ OS

์—ฌ๊ธฐ์— ํฌํ•จ๋˜์ง€ ์•Š์€ ๋‹ค๋ฅธ ์šด์˜์ฒด์ œ์˜ ๊ฒฝ์šฐ ์†Œ์Šค์—์„œ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์ปดํŒŒ์ผํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์‹œ์ž‘

์–ธ์–ด ๋ฐ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ TCP ์†Œ์ผ“, Unix ์†Œ์ผ“ ๋˜๋Š” Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ Docker ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” ๋ช…๋ น์ค„์— ์ง€์ •๋œ Cloud SQL ์ธ์Šคํ„ด์Šค ํ•˜๋‚˜ ์ด์ƒ์— ์—ฐ๊ฒฐํ•˜๊ณ  ๋กœ์ปฌ ์—ฐ๊ฒฐ์„ TCP ๋˜๋Š” Unix ์†Œ์ผ“์œผ๋กœ ์—ฝ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ํด๋ผ์ด์–ธํŠธ ๋„๊ตฌ์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ์„œ๋น„์Šค๋Š” ์ด๋Ÿฌํ•œ TCP ๋˜๋Š” Unix ์†Œ์ผ“ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด Cloud SQL ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

TCP ์†Œ์ผ“

TCP ์—ฐ๊ฒฐ์˜ ๊ฒฝ์šฐ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ localhost(127.0.0.1)์—์„œ ๋ฆฌ์Šจํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ธ์Šคํ„ด์Šค์— --port PORT_NUMBER๋ฅผ ์ง€์ •ํ•˜๋ฉด ๋กœ์ปฌ ์—ฐ๊ฒฐ์€ 127.0.0.1:PORT_NUMBER์—์„œ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

๋˜๋Š” ๋กœ์ปฌ ์—ฐ๊ฒฐ์— ๋‹ค๋ฅธ ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๊ฐ€ 0.0.0.0:1234์—์„œ ๋กœ์ปฌ ์—ฐ๊ฒฐ์„ ๋ฆฌ์Šจํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

./cloud-sql-proxy --address 0.0.0.0 --port 1234 INSTANCE_CONNECTION_NAME
  1. INSTANCE_CONNECTION_NAME์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. Google Cloud ์ฝ˜์†”์˜ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ๊ฐœ์š” ํŽ˜์ด์ง€์—์„œ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

        gcloud sql instances describe INSTANCE_NAME --format='value(connectionName)'

    ์˜ˆ๋ฅผ ๋“ค๋ฉด myproject:myregion:myinstance์ž…๋‹ˆ๋‹ค.

  2. ์ธ์Šคํ„ด์Šค์— ๊ณต๊ฐœ ๋ฐ ๋น„๊ณต๊ฐœ IP๊ฐ€ ๋ชจ๋‘ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ  Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ์—์„œ ๋น„๊ณต๊ฐœ IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ๋‹ค์Œ ์˜ต์…˜์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    --private-ip
  3. ์„œ๋น„์Šค ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์ธ์ฆํ•˜๋Š” ๊ฒฝ์šฐ ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“ค ๋•Œ ์ƒ์„ฑ๋œ ๋น„๊ณต๊ฐœ ํ‚ค ํŒŒ์ผ์˜ ํด๋ผ์ด์–ธํŠธ ๋จธ์‹  ๋‚ด ์œ„์น˜๋ฅผ ๊ธฐ๋กํ•ด ๋‘ก๋‹ˆ๋‹ค.
  4. Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

    ๊ฐ€๋Šฅํ•œ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ํ˜ธ์ถœ ๋ฌธ์ž์—ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • Cloud SDK ์ธ์ฆ ์‚ฌ์šฉ:
      ./cloud-sql-proxy --port 3306 INSTANCE_CONNECTION_NAME
      ์ง€์ •๋œ ํฌํŠธ๋Š” ๋กœ์ปฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„ ๋“ฑ์—์„œ ์ด๋ฏธ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํฌํŠธ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์„œ๋น„์Šค ๊ณ„์ • ์‚ฌ์šฉ ๋ฐ ๋ช…์‹œ์ ์œผ๋กœ ์ธ์Šคํ„ด์Šค ์—ฐ๊ฒฐ ์ด๋ฆ„ ํฌํ•จ(ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์— ๊ถŒ์žฅ):
      ./cloud-sql-proxy \
      --credentials-file PATH_TO_KEY_FILE INSTANCE_CONNECTION_NAME &

    Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์˜ต์…˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์ธ์ฆ ์˜ต์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

Unix ์†Œ์ผ“

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋Š” ํด๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ ํ˜ธ์ŠคํŠธ์—์„œ ์‹คํ–‰๋˜๋Š” ๋‘ ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ํ†ต์‹ ์„ ๊ด€๋ฆฌํ•˜๋Š” Posix ํ‘œ์ค€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ธ Unix ์†Œ์ผ“์—์„œ ๋ฆฌ์Šจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Unix ์†Œ์ผ“์„ ์‚ฌ์šฉํ•  ๋•Œ์˜ ์žฅ์ ์€ ๋ณด์•ˆ์ด ํ–ฅ์ƒ๋˜๊ณ  ์ง€์—ฐ ์‹œ๊ฐ„์ด ์งง๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์™ธ๋ถ€ ๋จธ์‹ ์—์„œ๋Š” Unix ์†Œ์ผ“์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Unix ์†Œ์ผ“์„ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋Œ€์ƒ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋‘ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋Œ€ํ•œ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. INSTANCE_CONNECTION_NAME์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. Google Cloud ์ฝ˜์†”์˜ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ๊ฐœ์š” ํŽ˜์ด์ง€์—์„œ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

        gcloud sql instances describe INSTANCE_NAME --format='value(connectionName)'

    ์˜ˆ๋ฅผ ๋“ค๋ฉด myproject:myregion:myinstance์ž…๋‹ˆ๋‹ค.

  2. Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์†Œ์ผ“์ด ์œ„์น˜ํ•  ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    sudo mkdir /cloudsql; sudo chmod 777 /cloudsql
  3. ์„œ๋น„์Šค ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์ธ์ฆํ•˜๋Š” ๊ฒฝ์šฐ ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“ค ๋•Œ ์ƒ์„ฑ๋œ ๋น„๊ณต๊ฐœ ํ‚ค ํŒŒ์ผ์˜ ํด๋ผ์ด์–ธํŠธ ๋จธ์‹  ๋‚ด ์œ„์น˜๋ฅผ ๊ธฐ๋กํ•ด ๋‘ก๋‹ˆ๋‹ค.
  4. ์ƒˆ Cloud Shell ํ„ฐ๋ฏธ๋„ ์ฐฝ์„ ์—ด๊ณ  Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

    ๊ฐ€๋Šฅํ•œ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ํ˜ธ์ถœ ๋ฌธ์ž์—ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • Google Cloud SDK ์ธ์ฆ ์‚ฌ์šฉ
      ./cloud-sql-proxy --unix-socket /cloudsql INSTANCE_CONNECTION_NAME &
    • ์„œ๋น„์Šค ๊ณ„์ • ์‚ฌ์šฉ
        ./cloud-sql-proxy --unix-socket /cloudsql
        --credentials-file PATH_TO_KEY_FILE INSTANCE_CONNECTION_NAME &

    ์ž์ฒด Cloud Shell ํ„ฐ๋ฏธ๋„์—์„œ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹œ์ž‘ํ•˜์—ฌ ์ถœ๋ ฅ์„ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์˜ ์ถœ๋ ฅ๊ณผ ๋ณ„๋„๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์˜ต์…˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์ธ์ฆ ์˜ต์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

Docker

Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด Google Container Registry์—์„œ ์ œ๊ณตํ•˜๋Š” Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ Docker ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๋ช…๋ น์–ด๋กœ TCP ์†Œ์ผ“์ด๋‚˜ Unix ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์€ INSTANCE_CONNECTION_NAME์„ ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด๋กœ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์Šคํ„ด์Šค๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. Google Cloud ์ฝ˜์†”์˜ ์ธ์Šคํ„ด์Šค ๊ฐœ์š” ํŽ˜์ด์ง€์—์„œ ๋˜๋Š” ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ INSTANCE_CONNECTION_NAME์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

gcloud sql instances describe INSTANCE_NAME
.

์˜ˆ๋ฅผ ๋“ค๋ฉด myproject:myregion:myinstance์ž…๋‹ˆ๋‹ค.

์–ธ์–ด์™€ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ TCP ์†Œ์ผ“์ด๋‚˜ Unix ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ Windows ํ™˜๊ฒฝ์—์„œ๋Š” Unix ์†Œ์ผ“์ด ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

TCP ์†Œ์ผ“ ์‚ฌ์šฉ

docker run -d \\
  -v PATH_TO_KEY_FILE:/path/to/service-account-key.json \\
  -p 127.0.0.1:3306:3306 \\
  gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.18.0 \\
  --address 0.0.0.0 --port 3306 \\
  --credentials-file /path/to/service-account-key.json INSTANCE_CONNECTION_NAME

Compute Engine ์ธ์Šคํ„ด์Šค์—์„œ ์ œ๊ณต๋˜๋Š” ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” --credentials-file ๋งค๊ฐœ๋ณ€์ˆ˜์™€ -v PATH_TO_KEY_FILE:/path/to/service-account-key.json ํ–‰์„ ํฌํ•จํ•˜์ง€ ๋งˆ์„ธ์š”.

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๊ฐ€ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ ์™ธ๋ถ€์— ๋…ธ์ถœ๋˜์ง€ ์•Š๋„๋ก ํ•ญ์ƒ -p์— 127.0.0.1 ํ”„๋ฆฌํ”ฝ์Šค๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค ๋งค๊ฐœ๋ณ€์ˆ˜์˜ '0.0.0.0'์€ Docker ์ปจํ…Œ์ด๋„ˆ ์™ธ๋ถ€์—์„œ ํฌํŠธ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Unix ์†Œ์ผ“ ์‚ฌ์šฉ

docker run -d -v /cloudsql:/cloudsql \\
  -v PATH_TO_KEY_FILE:/path/to/service-account-key.json \\
  gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.18.0 --unix-socket=/cloudsql \\
  --credentials-file /path/to/service-account-key.json INSTANCE_CONNECTION_NAME

Compute Engine ์ธ์Šคํ„ด์Šค์—์„œ ์ œ๊ณต๋˜๋Š” ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” --credentials-file ๋งค๊ฐœ๋ณ€์ˆ˜์™€ -v PATH_TO_KEY_FILE:/path/to/service-account-key.json ํ–‰์„ ํฌํ•จํ•˜์ง€ ๋งˆ์„ธ์š”.

์ปจํ…Œ์ด๋„ˆ ์ตœ์ ํ™” ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ /cloudsql ๋Œ€์‹  ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

-v /mnt/stateful_partition/cloudsql:/cloudsql

์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Compute Engine ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐํ•  ์ธ์Šคํ„ด์Šค๋ฅผ ๋™์ ์œผ๋กœ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.

mysql ํด๋ผ์ด์–ธํŠธ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

  1. MySQL Community Server ๋‹ค์šด๋กœ๋“œ ํŽ˜์ด์ง€์—์„œ ํ”Œ๋žซํผ์— ๋งž๋Š” MySQL Community Server๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    Community Server์— MySQL ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๋‹ค์šด๋กœ๋“œ ํŽ˜์ด์ง€์˜ ์ง€์‹œ์— ๋”ฐ๋ผ Community Server๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

MySQL์„ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ MySQL ์„ค์น˜ ๋ฐ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์‚ฌ์šฉํ•˜๋Š” ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด์€ TCP ์†Œ์ผ“, UNIX ์†Œ์ผ“, Docker ์ค‘์—์„œ ๋ฌด์—‡์„ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹œ์ž‘ํ–ˆ๋Š”์ง€์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

TCP ์†Œ์ผ“

  1. mysql ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
    mysql -u USERNAME -p --host 127.0.0.1
    MySQL 8.4 ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    mysql -u USERNAME -p --host 127.0.0.1 --get-server-public-key

    TCP ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐํ•˜๋ฉด 127.0.0.1์„ ํ†ตํ•ด Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ์— ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค.

  2. ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  3. mysql ํ”„๋กฌํ”„ํŠธ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Unix ์†Œ์ผ“ ์‚ฌ์šฉ

  1. mysql ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
    mysql -u USERNAME -p -S /cloudsql/INSTANCE_CONNECTION_NAME

    ์ฐธ๊ณ : MySQL 8.4 ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ UNIX ์†Œ์ผ“ ์—ฐ๊ฒฐ์—๋Š” Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  2. ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  3. mysql ํ”„๋กฌํ”„ํŠธ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋„์›€์ด ํ•„์š”ํ•˜์‹ ๊ฐ€์š”? ํ”„๋ก์‹œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ํ•„์š”ํ•˜๋ฉด Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์—ฐ๊ฒฐ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋˜๋Š” Cloud SQL ์ง€์› ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์—ฐ๊ฒฐ

Unix ๋˜๋Š” TCP ์†Œ์ผ“์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ชจ๋“  ์–ธ์–ด์—์„œ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์–ด๋–ป๊ฒŒ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” GitHub ์ „์ฒด ์˜ˆ์‹œ์˜ ๋ช‡ ๊ฐ€์ง€ ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์ž…๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ์ฃผ์ œ

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ๋ช…๋ น์ค„ ์ธ์ˆ˜

์œ„์˜ ์˜ˆ์‹œ๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๋‹ค๋ฃจ์ง€๋งŒ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ์—๋Š” ๋ช…๋ น์ค„ ์ธ์ˆ˜๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์˜ต์…˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช…๋ น์ค„ ์ธ์ˆ˜์— ๋Œ€ํ•œ ๋„์›€๋ง์€ --help ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์‹  ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

./cloud-sql-proxy --help

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ๋ช…๋ น์ค„ ์˜ต์…˜์„ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์˜ˆ์‹œ๋Š” Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ GitHub ์ €์žฅ์†Œ์˜ README๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์ธ์ฆ ์˜ต์…˜

์ด๋Ÿฌํ•œ ๋ชจ๋“  ์˜ต์…˜์€ INSTANCE_CONNECTION_NAME์„ ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด๋กœ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์Šคํ„ด์Šค๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. Google Cloud ์ฝ˜์†”์˜ ์ธ์Šคํ„ด์Šค ๊ฐœ์š” ํŽ˜์ด์ง€์—์„œ ๋˜๋Š” ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ INSTANCE_CONNECTION_NAME์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

gcloud sql instances describe --project PROJECT_ID INSTANCE_CONNECTION_NAME.

์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. gcloud sql instances describe --project myproject myinstance

์ด๋Ÿฌํ•œ ์˜ต์…˜ ์ค‘ ์ผ๋ถ€๋Š” ๊ณ„์ •์˜ RSA ๋น„๊ณต๊ฐœ ํ‚ค๊ฐ€ ํฌํ•จ๋œ JSON ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๊ณ„์ •์˜ JSON ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ์„œ๋น„์Šค ๊ณ„์ • ๋งŒ๋“ค๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋Š” ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ์ธ์ฆ ๋ฐฉ๋ฒ• ๋Œ€์•ˆ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋Š” ๋‹ค์Œ์˜ ๊ฐ ํ•ญ๋ชฉ์„ ๋‹ค์Œ ์ˆœ์„œ๋Œ€๋กœ ํ™•์ธํ•˜์—ฌ ์ฒซ ๋ฒˆ์งธ๋กœ ๋ฐœ๊ฒฌ๋œ ํ•ญ๋ชฉ์œผ๋กœ ์ธ์ฆ์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

  1. credentials-file ํ”Œ๋ž˜๊ทธ๋กœ ์ œ๊ณต๋œ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด

    ์„œ๋น„์Šค ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐ๋œ JSON ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ --credentials-file ํ”Œ๋ž˜๊ทธ๋ฅผ ํ•ด๋‹น ํŒŒ์ผ ๊ฒฝ๋กœ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๊ณ„์ •์—๋Š” Cloud SQL ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ๋ช…๋ น์ค„์—์„œ ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด --credentials-file ํ”Œ๋ž˜๊ทธ๊ฐ€ JSON ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ํŒŒ์ผ์˜ ๊ฒฝ๋กœ์™€ ํŒŒ์ผ ์ด๋ฆ„์œผ๋กœ ์„ค์ •๋œ cloud-sql-proxy ๋ช…๋ น์–ด๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ๋กœ๋Š” ์ ˆ๋Œ€์ ์ด๊ฑฐ๋‚˜ ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    ./cloud-sql-proxy --credentials-file PATH_TO_KEY_FILE \
    INSTANCE_CONNECTION_NAME
      

    IAM ์—ญํ• ์„ ์„œ๋น„์Šค ๊ณ„์ •์— ์ถ”๊ฐ€ํ•˜๋Š” ์ž์„ธํ•œ ๋ฐฉ๋ฒ•์€ ์„œ๋น„์Šค ๊ณ„์ •์— ์—ญํ•  ๋ถ€์—ฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    Cloud SQL์—์„œ ์ง€์›ํ•˜๋Š” ์—ญํ• ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud SQL์˜ IAM ์—ญํ• ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

  2. ์•ก์„ธ์Šค ํ† ํฐ์œผ๋กœ ์ œ๊ณต๋œ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด

    ์•ก์„ธ์Šค ํ† ํฐ์„ ๋งŒ๋“ค๊ณ  --token ํ”Œ๋ž˜๊ทธ์™€ ํ•จ๊ป˜ cloud-sql-proxy ๋ช…๋ น์–ด๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ OAuth 2.0 ์•ก์„ธ์Šค ํ† ํฐ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    ./cloud-sql-proxy --token ACCESS_TOKEN \
    INSTANCE_CONNECTION_NAME
      
  3. ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ์ œ๊ณต๋œ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด

    ์ด ์˜ต์…˜์€ --credentials-file ๋ช…๋ น์ค„ ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  GOOGLE_APPLICATION_CREDENTIALS ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์„ค์ •ํ•œ JSON ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ํŒŒ์ผ์„ ์ง€์ •ํ•œ๋‹ค๋Š” ์ ์„ ์ œ์™ธํ•˜๋ฉด --credentials-file ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  4. ์ธ์ฆ๋œ gcloud CLI ํด๋ผ์ด์–ธํŠธ์˜ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด

    gcloud CLI๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๊ฐœ์ธ ๊ณ„์ •์œผ๋กœ ์ธ์ฆํ•œ ๊ฒฝ์šฐ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ์—์„œ ๋™์ผํ•œ ๊ณ„์ • ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ํŠนํžˆ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์ค€๋น„ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

    Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ์—์„œ gcloud CLI ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ gcloud CLI๋ฅผ ์ธ์ฆํ•ฉ๋‹ˆ๋‹ค.

    gcloud auth application-default login
  5. Compute Engine ์ธ์Šคํ„ด์Šค์™€ ๊ด€๋ จ๋œ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด

    Compute Engine ์ธ์Šคํ„ด์Šค์—์„œ Cloud SQL์— ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒฝ์šฐ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋Š” Compute Engine ์ธ์Šคํ„ด์Šค์™€ ์—ฐ๊ฒฐ๋œ ์„œ๋น„์Šค ๊ณ„์ •์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๊ณ„์ •์— Cloud SQL ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์ด ์žˆ์œผ๋ฉด Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ธ์ฆ๋ฉ๋‹ˆ๋‹ค.

    Compute Engine ์ธ์Šคํ„ด์Šค๊ฐ€ Cloud SQL ์ธ์Šคํ„ด์Šค์™€ ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ์— ์žˆ์œผ๋ฉด Compute Engine ์ธ์Šคํ„ด์Šค์˜ ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ •์—๋Š” Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์ธ์ฆํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ์ธ์Šคํ„ด์Šค๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์— ์žˆ๋Š” ๊ฒฝ์šฐ Compute Engine ์ธ์Šคํ„ด์Šค์˜ ์„œ๋น„์Šค ๊ณ„์ •์„ Cloud SQL ์ธ์Šคํ„ด์Šค๊ฐ€ ํฌํ•จ๋œ ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  6. ํ™˜๊ฒฝ์˜ ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ •

    Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๊ฐ€ ์•ž์—์„œ ์„ค๋ช…ํ•œ ์œ„์น˜์—์„œ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์„œ๋ฒ„ ๊ฐ„ ํ”„๋กœ๋•์…˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ธ์ฆ ์„ค์ •์— ์„ค๋ช…๋œ ๋กœ์ง์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์ผ๋ถ€ ํ™˜๊ฒฝ(์˜ˆ: Compute Engine, App Engine ๋“ฑ)์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ธ์ฆํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ •์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ด ๊ณ„์ •์—๋Š” ์—ญํ•  ๋ฐ ๊ถŒํ•œ์— ์„ค๋ช…๋œ ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Google Cloud์˜ ์ธ์ฆ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ธ์ฆ ๊ฐœ์š”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์„œ๋น„์Šค ๊ณ„์ • ๋งŒ๋“ค๊ธฐ

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

    ์„œ๋น„์Šค ๊ณ„์ •์œผ๋กœ ์ด๋™

  2. Cloud SQL ์ธ์Šคํ„ด์Šค๊ฐ€ ํฌํ•จ๋œ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. ์„œ๋น„์Šค ๊ณ„์ • ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  4. ์„œ๋น„์Šค ๊ณ„์ • ์ด๋ฆ„ ํ•„๋“œ์— ์„œ๋น„์Šค ๊ณ„์ •์˜ ์„ค๋ช…์ด ํฌํ•จ๋œ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  5. ์„œ๋น„์Šค ๊ณ„์ • ID๋ฅผ ๊ณ ์œ ํ•˜๊ณ  ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•œ ํ›„ ๋งŒ๋“ค๊ณ  ๊ณ„์†ํ•˜๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  6. ์—ญํ•  ์„ ํƒ ํ•„๋“œ๋ฅผ ํด๋ฆญํ•˜๊ณ  ๋‹ค์Œ ์—ญํ•  ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    • Cloud SQL > Cloud SQL ํด๋ผ์ด์–ธํŠธ
    • Cloud SQL > Cloud SQL ํŽธ์ง‘์ž
    • Cloud SQL > Cloud SQL ๊ด€๋ฆฌ์ž
  7. ์™„๋ฃŒ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์„œ๋น„์Šค ๊ณ„์ • ๋งŒ๋“ค๊ธฐ๋ฅผ ๋งˆ์นฉ๋‹ˆ๋‹ค.
  8. ์ƒˆ ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ž‘์—… ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•œ ํ›„ ํ‚ค ๊ด€๋ฆฌ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  9. ํ‚ค ์ถ”๊ฐ€ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•œ ํ›„ ์ƒˆ ํ‚ค ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  10. ํ‚ค ์œ ํ˜•์ด JSON์ธ์ง€ ํ™•์ธํ•œ ํ›„ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ๋น„๊ณต๊ฐœ ํ‚ค ํŒŒ์ผ์ด ๋จธ์‹ ์— ๋‹ค์šด๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์„ ๋‹ค๋ฅธ ์œ„์น˜๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ‚ค ํŒŒ์ผ์„ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณด๊ด€ํ•˜์„ธ์š”.

๋น„๊ณต๊ฐœ IP๋กœ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์‚ฌ์šฉ

๋น„๊ณต๊ฐœ IP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๊ฐ€ ์ธ์Šคํ„ด์Šค์™€ ๋™์ผํ•œ VPC ๋„คํŠธ์›Œํฌ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋Š” IP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์Šคํ„ด์Šค์™€์˜ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋Š” ๊ณต๊ฐœ IPv4 ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

Cloud SQL ์ธ์Šคํ„ด์Šค์— ๋น„๊ณต๊ฐœ IP๋งŒ ์žˆ๊ฑฐ๋‚˜ ์ธ์Šคํ„ด์Šค์— ๊ณต๊ฐœ ๋ฐ ๋น„๊ณต๊ฐœ IP๊ฐ€ ๋ชจ๋‘ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ  Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๊ฐ€ ๋น„๊ณต๊ฐœ IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๋ ค๋ฉด Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ๋‹ค์Œ ์˜ต์…˜์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

--private-ip

Private Service Connect๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ ์ธ์Šคํ„ด์Šค์—์„œ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์‚ฌ์šฉ

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Private Service Connect๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ Cloud SQL ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋Š” ์Šน์ธ๋œ ๋„คํŠธ์›Œํฌ๋‚˜ SSL ๊ตฌ์„ฑ ์—†์ด๋„ ์ด ์ธ์Šคํ„ด์Šค์— ์•ˆ์ „ํ•˜๊ฒŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ์ปค๋„ฅํ„ฐ์ž…๋‹ˆ๋‹ค.

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ์„ ํ—ˆ์šฉํ•˜๋ ค๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์ธ์Šคํ„ด์Šค์— ์ œ๊ณต๋œ ๊ถŒ์žฅ DNS ์ด๋ฆ„๊ณผ ์ผ์น˜ํ•˜๋Š” DNS ๋ ˆ์ฝ”๋“œ๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. DNS ๋ ˆ์ฝ”๋“œ๋Š” DNS ๋ฆฌ์†Œ์Šค์™€ ๋„๋ฉ”์ธ ์ด๋ฆ„ ๊ฐ„์˜ ๋งคํ•‘์ž…๋‹ˆ๋‹ค.

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Private Service Connect๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž ๊ณ„์ •์„ ๋งŒ๋“ค๊ธฐ

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•  ๋•Œ ์ธ์Šคํ„ด์Šค์— ๋กœ๊ทธ์ธํ•  ์‚ฌ์šฉ์ž ๊ณ„์ •์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ์—๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž ๊ณ„์ •์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋Š” Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๊ฐ€ ์•„๋‹ˆ๋ฉด ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๋Š” ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์œผ๋กœ ํ•ญ์ƒ ์—ฐ๊ฒฐ๋˜๊ธฐ ๋•Œ๋ฌธ์— Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์šฉ์ž ๊ณ„์ •์„ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ธ์Šคํ„ด์Šค ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ณด์•ˆ์„ ์†์ƒ์‹œํ‚ค์ง€ ์•Š๊ณ  ๋น„๋ฐ€๋ฒˆํ˜ธ ์—†์ด ํ•ด๋‹น ๊ณ„์ •์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์šฉ์ž ๊ณ„์ •์„ ๋งŒ๋“ค๋ ค๋ฉด ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ 'cloudsqlproxy~[IP_ADDRESS]'๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. IP ์ฃผ์†Œ ์™€์ผ๋“œ ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(์ด ๊ฒฝ์šฐ ๊ฒฐ๊ณผ๋Š” 'cloudsqlproxy~%'๊ฐ€ ๋จ). ์ „์ฒด ์‚ฌ์šฉ์ž ๊ณ„์ • ์ด๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

'[USER_NAME]'@'cloudsqlproxy~%'

๋˜๋Š”

'[USER_NAME]'@'cloudsqlproxy~[IP_ADDRESS]'

์‚ฌ์šฉ์ž ๊ณ„์ •์„ ๋งŒ๋“œ๋Š” ๋ฐ ๋„์›€์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ๋งŒ๋“ค๊ธฐ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ์‚ฌ์šฉ์ž ๊ณ„์ •์„ ์‚ฌ์šฉํ•œ Cloud SQL ์ž‘๋™ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์‚ฌ์šฉ์ž๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ณ„๋„์˜ ํ”„๋กœ์„ธ์Šค์—์„œ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์‹คํ–‰

๋ณ„๋„์˜ Cloud Shell ํ„ฐ๋ฏธ๋„ ํ”„๋กœ์„ธ์Šค์—์„œ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ฝ˜์†” ์ถœ๋ ฅ์ด ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์˜ ์ถœ๋ ฅ๊ณผ ํ˜ผํ•ฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ„๋„์˜ ํ”„๋กœ์„ธ์Šค์—์„œ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

Linux

Linux ๋˜๋Š” macOS์—์„œ๋Š” ๋ช…๋ น์ค„์—์„œ ํ›„ํ–‰ &๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ„๋„์˜ ํ”„๋กœ์„ธ์Šค์—์„œ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

./cloud-sql-proxy INSTANCE_CONNECTION_NAME
  --credentials-file PATH_TO_KEY_FILE &

Windows

Windows PowerShell์—์„œ Start-Process ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ๋ณ„๋„์˜ ํ”„๋กœ์„ธ์Šค์—์„œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

Start-Process --filepath "cloud-sql-proxy.exe"
  --ArgumentList "
  --credentials-file PATH_TO_KEY_FILEINSTANCE_CONNECTION_NAME"

Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์‹คํ–‰

Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด Google Container Registry์—์„œ ์ œ๊ณตํ•˜๋Š” Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ Docker ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ Docker ์ด๋ฏธ์ง€๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.18.0

๋‹ค์Œ ๋ช…๋ น์–ด๋กœ TCP ์†Œ์ผ“์ด๋‚˜ Unix ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

TCP ์†Œ์ผ“

    docker run -d \
      -v PATH_TO_KEY_FILE:/path/to/service-account-key.json \
      -p 127.0.0.1:3306:3306 \
      gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.18.0 \
      --address 0.0.0.0 \
      --credentials-file /path/to/service-account-key.json \
      INSTANCE_CONNECTION_NAME

Unix ์†Œ์ผ“

    docker run -d \
      -v /PATH_TO_HOST_TARGET:/PATH_TO_GUEST_TARGET \
      -v PATH_TO_KEY_FILE:/path/to/service-account-key.json \
      gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.18.0 --unix-socket /cloudsql \
      --credentials-file /path/to/service-account-key.json/PATH_TO_KEY_FILE \
      INSTANCE_CONNECTION_NAME

์ปจํ…Œ์ด๋„ˆ ์ตœ์ ํ™” ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ /cloudsql ๋Œ€์‹  ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

v /mnt/stateful_partition/cloudsql:/cloudsql

Compute Engine ์ธ์Šคํ„ด์Šค์—์„œ ์ œ๊ณต๋˜๋Š” ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” credential_file ๋งค๊ฐœ๋ณ€์ˆ˜์™€ -v PATH_TO_KEY_FILE:/path/to/service-account-key.json ํ–‰์„ ํฌํ•จํ•˜์ง€ ๋งˆ์„ธ์š”.

์„œ๋น„์Šค๋กœ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์‹คํ–‰

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์„œ๋น„์Šค๋กœ ์‹คํ–‰์€ ๋กœ์ปฌ ๊ฐœ๋ฐœ ๋ฐ ํ”„๋กœ๋•์…˜ ์›Œํฌ๋กœ๋“œ๋ฅผ ์œ„ํ•œ ์˜ต์…˜์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ Cloud SQL ์ธ์Šคํ„ด์Šค์— ์•ก์„ธ์Šคํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์™„๋ฃŒ ํ›„์— ์ค‘์ง€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ๋•์…˜ ์›Œํฌ๋กœ๋“œ์˜ ๊ฒฝ์šฐ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋Š” ํ˜„์žฌ Windows ์„œ๋น„์Šค๋กœ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ง€์›์„ ๊ธฐ๋ณธ ์ œ๊ณตํ•˜์ง€ ์•Š์ง€๋งŒ ์„œ๋“œ ํŒŒํ‹ฐ ์„œ๋น„์Šค ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋น„์Šค๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด NSSM์„ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ Windows ์„œ๋น„์Šค๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด NSSM์—์„œ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์‘๋‹ต์ด ์ค‘์ง€๋˜๋ฉด ์ž๋™์œผ๋กœ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ NSSM ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์‚ฌ์šฉ ์‹œํ–‰

ConnectorEnforcement๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL์—์„œ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

Private Service Connect ์ง€์› ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ œํ•œ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค์— ์ปค๋„ฅํ„ฐ ์ ์šฉ์ด ์‚ฌ์šฉ ์„ค์ •๋œ ๊ฒฝ์šฐ ์ธ์Šคํ„ด์Šค์˜ ์ฝ๊ธฐ ๋ณต์ œ๋ณธ์„ ๋งŒ๋“ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ธ์Šคํ„ด์Šค์— ์ฝ๊ธฐ ๋ณต์ œ๋ณธ์ด ์žˆ์œผ๋ฉด ์ธ์Šคํ„ด์Šค์— ์ปค๋„ฅํ„ฐ ์ ์šฉ์„ ์‚ฌ์šฉ ์„ค์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

gcloud

๋‹ค์Œ ๋ช…๋ น์–ด๋Š” Cloud SQL ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    gcloud sql instances patch INSTANCE_NAME \
    --connector-enforcement REQUIRED
  

์ ์šฉ์„ ์ค‘์ง€ํ•˜๋ ค๋ฉด ๋‹ค์Œ ์ฝ”๋“œ ์ค„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. --connector-enforcement NOT_REQUIRED ์ด ์—…๋ฐ์ดํŠธ๋Š” ๋‹ค์‹œ ์‹œ์ž‘์„ ํŠธ๋ฆฌ๊ฑฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

REST v1

๋‹ค์Œ ๋ช…๋ น์–ด๋Š” Cloud SQL ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

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

  • project-id: ํ”„๋กœ์ ํŠธ ID
  • instance-id: ์ธ์Šคํ„ด์Šค ID์ž…๋‹ˆ๋‹ค.

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

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

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

{
  "settings": {                     
    "connectorEnforcement": "REQUIRED"    
  }                                             
}   

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

์‹œํ–‰์„ ์ค‘์ง€ํ•˜๋ ค๋ฉด ๋Œ€์‹  "connectorEnforcement": "NOT_REQUIRED"๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์—…๋ฐ์ดํŠธ๋Š” ๋‹ค์‹œ ์‹œ์ž‘์„ ํŠธ๋ฆฌ๊ฑฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

REST v1beta4

๋‹ค์Œ ๋ช…๋ น์–ด๋Š” Cloud SQL ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

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

  • project-id: ํ”„๋กœ์ ํŠธ ID
  • instance-id: ์ธ์Šคํ„ด์Šค ID์ž…๋‹ˆ๋‹ค.

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

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

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

{
  "settings": {
    "connectorEnforcement": "REQUIRED"
  }
}

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

์‹œํ–‰์„ ์ค‘์ง€ํ•˜๋ ค๋ฉด ๋Œ€์‹  "connectorEnforcement": "NOT_REQUIRED"๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์—…๋ฐ์ดํŠธ๋Š” ๋‹ค์‹œ ์‹œ์ž‘์„ ํŠธ๋ฆฌ๊ฑฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์ž‘์—…์— ๋Œ€ํ•œ ํŒ

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ํ˜ธ์ถœํ•˜๊ธฐ

๋ชจ๋“  ํ”„๋ก์‹œ ํ˜ธ์ถœ ์ƒ˜ํ”Œ์€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. ์ถœ๋ ฅ์ด ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์˜ ์ถœ๋ ฅ๊ณผ ์„ž์ด์ง€ ์•Š๋„๋ก Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ์— Cloud Shell ํ„ฐ๋ฏธ๋„์„ ์˜ˆ์•ฝํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ์˜ ์ถœ๋ ฅ์„ ์‚ฌ์šฉํ•ด ์—ฐ๊ฒฐ ๋ฌธ์ œ๋ฅผ ์ง„๋‹จํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋กœ๊ทธ ํŒŒ์ผ๋กœ ์บก์ฒ˜ํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹œ์ž‘ํ•˜์ง€ ์•Š์œผ๋ฉด ์ถœ๋ ฅ์ด ๋ฆฌ๋””๋ ‰์…˜๋˜์ง€ ์•Š๋Š” ํ•œ stdout์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

/cloudsql์„ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์†Œ์ผ“์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์‚ฌ์šฉํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. (์ด ๋””๋ ‰ํ† ๋ฆฌ ์ด๋ฆ„์€ App Engine ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด๊ณผ์˜ ์ฐจ์ด๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์„ ํƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.) ๊ทธ๋Ÿฌ๋‚˜ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ „์ฒด ๊ธธ์ด๋ฅผ ์ตœ์†Œ๋กœ ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋Š” ์šด์˜์ฒด์ œ์˜ ๊ธธ์ด ์ œํ•œ์ด ์ ์šฉ๋˜๋Š” ๋” ๊ธด ๋ฌธ์ž์—ด์— ํ†ตํ•ฉ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์— ๋”ฐ๋ผ ๋‹ค๋ฅด์ง€๋งŒ ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ 91~108์ž์ž…๋‹ˆ๋‹ค. Linux์—์„œ ๊ธธ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ 108์ž๋กœ ์ •์˜๋˜๋ฉฐ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

cat /usr/include/linux/un.h | grep "define UNIX_PATH_MAX"

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐ

ํ•˜๋‚˜์˜ ๋กœ์ปฌ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ Cloud SQL ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Unix ์†Œ์ผ“๊ณผ TCP ์ค‘์— ๋ฌด์—‡์„ ์‚ฌ์šฉํ•˜๋Š”์ง€์— ๋”ฐ๋ผ ์—ฐ๊ฒฐ ๋ฐฉ๋ฒ•์ด ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

Unix ์†Œ์ผ“

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ ๋ชฉ๋ก์œผ๋กœ ๊ฐ ์ธ์Šคํ„ด์Šค ์—ฐ๊ฒฐ ์ด๋ฆ„์„ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ์— ์ธ์ˆ˜๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋Š” ์‹œ์ž‘๋˜๋ฉด ๊ฐ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

์ง€์ •๋œ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

      ./cloud-sql-proxy --unix-socket /cloudsql \
      myProject:us-central1:myInstance myProject:us-central1:myInstance2 &
      mysql -u myUser -S /cloudsql/myProject:us-central1:myInstance2
  

TCP ์†Œ์ผ“

TCP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒฝ์šฐ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๊ฐ€ ๊ฐ Cloud SQL ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฆฌ์Šจํ•  ์ˆ˜ ์žˆ๋„๋ก ๋จธ์‹ ์— ํฌํŠธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ Cloud SQL ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•  ๋•Œ ์ง€์ •๋œ ๊ฐ ํฌํŠธ๋Š” ๊ณ ์œ ํ•ด์•ผ ํ•˜๋ฉฐ ๋จธ์‹ ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    # Start the Cloud SQL Auth Proxy to connect to two different Cloud SQL instances.
    # Give the Cloud SQL Auth Proxy a unique port on your machine to use for each Cloud SQL instance.

    ./cloud-sql-proxy "myProject:us-central1:myInstance?port=3306" \
    "myProject:us-central1:myInstance2?port=1234"

    # Connect to "myInstance" using port 3306 on your machine:
    mysql -u myInstanceUser --host 127.0.0.1  --port 3306

    # Connect to "myInstance2" using port 1234 on your machine:
    mysql -u myInstance2User --host 127.0.0.1  --port 1234
  

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์—ฐ๊ฒฐ ๋ฌธ์ œ ํ•ด๊ฒฐ

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ Docker ์ด๋ฏธ์ง€๋Š” ํŠน์ • ๋ฒ„์ „์˜ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ์˜ ์ƒˆ ๋ฒ„์ „์ด ์ถœ์‹œ๋˜๋ฉด ์ƒˆ ๋ฒ„์ „์˜ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ Docker ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์™€์„œ ํ™˜๊ฒฝ์„ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ GitHub ์ถœ์‹œ ํŽ˜์ด์ง€๋ฅผ ํ™•์ธํ•˜์—ฌ ํ˜„์žฌ ๋ฒ„์ „์˜ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฌธ์ œ์˜ ์›์ธ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์“ฐ๊ธฐ ์—”๋“œํฌ์ธํŠธ๊ฐ€ ์•„๋‹Œ IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์ถœ๋ ฅ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์ถœ๋ ฅ์€ ๋ฌธ์ œ์˜ ์›์ธ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ถœ๋ ฅ์„ ํŒŒ์ผ๋กœ ๋ณด๋‚ด๊ฑฐ๋‚˜ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹œ์ž‘ํ•œ Cloud Shell ํ„ฐ๋ฏธ๋„์„ ํ™•์ธํ•˜์„ธ์š”.

  • 403 notAuthorized ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ์„œ๋น„์Šค ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์ธ์ฆํ•˜๋ ค๋ฉด ์„œ๋น„์Šค ๊ณ„์ •์— ์˜ฌ๋ฐ”๋ฅธ ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    IAM ํŽ˜์ด์ง€์—์„œ ID๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์„œ๋น„์Šค ๊ณ„์ •์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด cloudsql.instances.connect ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Cloud SQL Admin, Client, Editor ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์—๋Š” ์ด ๊ถŒํ•œ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • App Engine์—์„œ ์—ฐ๊ฒฐํ•  ๋•Œ 403 notAuthorized ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด app.yaml ๊ฐ’ cloud_sql_instances์— ์ธ์Šคํ„ด์Šค ์—ฐ๊ฒฐ ์ด๋ฆ„ ๋˜๋Š” ์ฒ ์ž๊ฐ€ ์ž˜๋ชป๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค ์—ฐ๊ฒฐ ์ด๋ฆ„์€ ํ•ญ์ƒ PROJECT:REGION:INSTANCE ํ˜•์‹์ž…๋‹ˆ๋‹ค.

    ๋˜ํ•œ App Engine ์„œ๋น„์Šค ๊ณ„์ •(์˜ˆ: $PROJECT_ID@appspot.gserviceaccount.com)์— Cloud SQL ํด๋ผ์ด์–ธํŠธ IAM ์—ญํ• ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    App Engine ์„œ๋น„์Šค๊ฐ€ ํ•œ ํ”„๋กœ์ ํŠธ(A ํ”„๋กœ์ ํŠธ)์— ์žˆ๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ(B ํ”„๋กœ์ ํŠธ)์— ์žˆ๋Š” ๊ฒฝ์šฐ ์ด ์˜ค๋ฅ˜๋Š” App Engine ์„œ๋น„์Šค ๊ณ„์ •์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ(B ํ”„๋กœ์ ํŠธ)์˜ Cloud SQL ํด๋ผ์ด์–ธํŠธ IAM ์—ญํ• ์ด ๋ถ€์—ฌ๋˜์ง€ ์•Š์•˜์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

  • Cloud SQL Admin API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ๋กœ๊ทธ์— Error 403: Access Not Configured์™€ ๊ฐ™์€ ์ถœ๋ ฅ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  • ์ธ์Šคํ„ด์Šค ๋ชฉ๋ก์— ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒฝ์šฐ ๊ณต๋ฐฑ ์—†์ด ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. TCP๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ธ์Šคํ„ด์Šค๋งˆ๋‹ค ๋‹ค๋ฅธ ํฌํŠธ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • UNIX ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒฝ์šฐ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ์ง€์ •ํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋‚˜์—ดํ•˜์—ฌ ์†Œ์ผ“์ด ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • ์•„์›ƒ๋ฐ”์šด๋“œ ๋ฐฉํ™”๋ฒฝ ์ •์ฑ…์ด ์žˆ์œผ๋ฉด ๋Œ€์ƒ Cloud SQL ์ธ์Šคํ„ด์Šค์—์„œ ํฌํŠธ 3307์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • Google Cloud ์ฝ˜์†”์˜ ์ž‘์—… > ๋กœ๊น… > ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ ์„น์…˜ ์•„๋ž˜์˜ ๋กœ๊ทธ๋ฅผ ์กฐ์‚ฌํ•˜์—ฌ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‹œ์ž‘ํ–ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ฑ๊ณตํ•œ ์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    2021/06/14 15:47:56 Listening on /cloudsql/$PROJECT_ID:$REGION:$INSTANCE_NAME/3306 for $PROJECT_ID:$REGION:$INSTANCE_NAME
    2021/06/14 15:47:56 Ready for new connections
    
  • ํ• ๋‹น๋Ÿ‰ ๋ฌธ์ œ: Cloud SQL Admin API ํ• ๋‹น๋Ÿ‰์ด ์œ„๋ฐ˜๋˜๋ฉด Cloud SQL Auth ํ”„๋ก์‹œ๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ๋‹ค์Œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    There was a problem when parsing a instance configuration but ignoring due
    to the configuration. Error: googleapi: Error 429: Quota exceeded for quota
    metric 'Queries' and limit 'Queries per minute per user' of service
    'sqladmin.googleapis.com' for consumer 'project_number:$PROJECT_ID.,
    rateLimitExceeded
    

    ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ”„๋ก์‹œ์— ์—ฐ๊ฒฐ๋œ ํ›„ ํ”„๋ก์‹œ๊ฐ€ ๋‹ค์Œ ์˜ค๋ฅ˜๋ฅผ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

    failed to refresh the ephemeral certificate for $INSTANCE_CONNECTION_NAME:
    googleapi: Error 429: Quota exceeded for quota metric 'Queries' and limit
    'Queries per minute per user' of service 'sqladmin.googleapis.com' for
    consumer 'project_number:$PROJECT_ID., rateLimitExceeded
    

    ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: ํ• ๋‹น๋Ÿ‰ ๋ฌธ์ œ์˜ ์›์ธ์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ปค๋„ฅํ„ฐ๋ฅผ ์˜ค์šฉํ•˜๊ณ  ์žˆ๊ณ  ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์ƒˆ ์—ฐ๊ฒฐ์„ ๋งŒ๋“ค๊ณ  ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ์ง€์›ํŒ€์— ์—ฐ๋ฝํ•˜์—ฌ Cloud SQL Admin API ํ• ๋‹น๋Ÿ‰ ์ฆ๊ฐ€๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์‹œ์ž‘ ์‹œ ํ• ๋‹น๋Ÿ‰ ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‹ค์‹œ ๋ฐฐํฌํ•˜์—ฌ ํ”„๋ก์‹œ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‹œ์ž‘ ํ›„ ํ• ๋‹น๋Ÿ‰ ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ์žฌ๋ฐฐํฌ๊ฐ€ ๋ถˆํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

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