์ด ํ์ด์ง์์๋ 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
๊ถํ์ด ํฌํจ๋ฉ๋๋ค. - ์ํ๋ ๊ฒฝ์ฐ ํน์ Cloud SQL ์ธ์คํด์ค ํ๋๋ง ์ฐ๊ฒฐํ ์ ์๋ ๊ถํ์ ๊ณ์ ์ ๋ถ์ฌํ๋ IAM ์กฐ๊ฑด์ IAM ์ ์ฑ ๋ฐ์ธ๋ฉ์ ํฌํจํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์๋ ์๋น์ค ๊ณ์ ์ ๊ฒฝ์ฐ ๊ณ์ ์ Cloud SQL ํด๋ผ์ด์ธํธ ์ญํ ์ด ์๋์ง ํ์ธํฉ๋๋ค. ์ด ์ญํ ์๋ ์ฃผ ๊ตฌ์ฑ์์ด ํ๋ก์ ํธ์ ๋ชจ๋ Cloud SQL ์ธ์คํด์ค์ ์ฐ๊ฒฐํ๋๋ก ์น์ธํ๋
-
Enable the Cloud SQL Admin API.
- gcloud CLI๋ฅผ ์ค์นํ๊ณ ์ด๊ธฐํํฉ๋๋ค.
- (์ ํ์ฌํญ) Cloud SQL ์ธ์ฆ ํ๋ก์ Docker ํด๋ผ์ด์ธํธ๋ฅผ ์ค์นํฉ๋๋ค.
Cloud SQL ์ธ์ฆ ํ๋ก์ ๋ค์ด๋ก๋
Linux 64๋นํธ
- 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
- Cloud SQL ์ธ์ฆ ํ๋ก์ ์คํ ํ์ผ์ ๋ง๋ญ๋๋ค.
chmod +x cloud-sql-proxy
Linux 32๋นํธ
- 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
curl
๋ช ๋ น์ด๋ฅผ ์ฐพ์ ์ ์์ผ๋ฉดsudo apt install curl
์ ์คํํ๊ณ ๋ค์ด๋ก๋ ๋ช ๋ น์ด๋ฅผ ๋ฐ๋ณตํฉ๋๋ค.- Cloud SQL ์ธ์ฆ ํ๋ก์ ์คํ ํ์ผ์ ๋ง๋ญ๋๋ค.
chmod +x cloud-sql-proxy
macOS 64๋นํธ
- 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
- Cloud SQL ์ธ์ฆ ํ๋ก์ ์คํ ํ์ผ์ ๋ง๋ญ๋๋ค.
chmod +x cloud-sql-proxy
Mac M1
- 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
- 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
INSTANCE_CONNECTION_NAME์ ๋ณต์ฌํฉ๋๋ค. Google Cloud ์ฝ์์ ์ธ์คํด์ค์ ๋ํ ๊ฐ์ ํ์ด์ง์์ ํ์ธํ๊ฑฐ๋ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ํ์ธํ ์ ์์ต๋๋ค.
gcloud sql instances describe INSTANCE_NAME --format='value(connectionName)'
์๋ฅผ ๋ค๋ฉด myproject:myregion:myinstance์ ๋๋ค.
- ์ธ์คํด์ค์ ๊ณต๊ฐ ๋ฐ ๋น๊ณต๊ฐ IP๊ฐ ๋ชจ๋ ๊ตฌ์ฑ๋์ด ์๊ณ Cloud SQL ์ธ์ฆ ํ๋ก์์์ ๋น๊ณต๊ฐ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ๋๋ก ํ๋ ค๋ ๊ฒฝ์ฐ Cloud SQL ์ธ์ฆ ํ๋ก์๋ฅผ ์์ํ ๋ ๋ค์ ์ต์
์ ์ ๊ณตํด์ผ ํฉ๋๋ค.
--private-ip
- ์๋น์ค ๊ณ์ ์ ์ฌ์ฉํ์ฌ Cloud SQL ์ธ์ฆ ํ๋ก์๋ฅผ ์ธ์ฆํ๋ ๊ฒฝ์ฐ ์๋น์ค ๊ณ์ ์ ๋ง๋ค ๋ ์์ฑ๋ ๋น๊ณต๊ฐ ํค ํ์ผ์ ํด๋ผ์ด์ธํธ ๋จธ์ ๋ด ์์น๋ฅผ ๊ธฐ๋กํด ๋ก๋๋ค.
- 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 ์ธ์ฆ ํ๋ก์ ์ธ์ฆ ์ต์ ์ ์ฐธ์กฐํ์ธ์.
- Cloud SDK ์ธ์ฆ ์ฌ์ฉ:
Unix ์์ผ
Cloud SQL ์ธ์ฆ ํ๋ก์๋ ํด๋๋ฅผ ์ฌ์ฉํ์ฌ ๋์ผํ ํธ์คํธ์์ ์คํ๋๋ ๋ ํ๋ก์ธ์ค ๊ฐ์ ํต์ ์ ๊ด๋ฆฌํ๋ Posix ํ์ค ๋ฉ์ปค๋์ฆ์ธ Unix ์์ผ์์ ๋ฆฌ์จํ ์ ์์ต๋๋ค. Unix ์์ผ์ ์ฌ์ฉํ ๋์ ์ฅ์ ์ ๋ณด์์ด ํฅ์๋๊ณ ์ง์ฐ ์๊ฐ์ด ์งง๋ค๋ ๊ฒ์ ๋๋ค. ํ์ง๋ง ์ธ๋ถ ๋จธ์ ์์๋ Unix ์์ผ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
Unix ์์ผ์ ๋ง๋ค๊ณ ์ฌ์ฉํ๋ ค๋ฉด ๋์ ๋๋ ํฐ๋ฆฌ๊ฐ ์์ด์ผ ํ๋ฉฐ Cloud SQL ์ธ์ฆ ํ๋ก์์ ์ ํ๋ฆฌ์ผ์ด์ ๋ชจ๋ ๋๋ ํฐ๋ฆฌ์ ๋ํ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์ก์ธ์ค ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค.
INSTANCE_CONNECTION_NAME์ ๋ณต์ฌํฉ๋๋ค. Google Cloud ์ฝ์์ ์ธ์คํด์ค์ ๋ํ ๊ฐ์ ํ์ด์ง์์ ํ์ธํ๊ฑฐ๋ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ํ์ธํ ์ ์์ต๋๋ค.
gcloud sql instances describe INSTANCE_NAME --format='value(connectionName)'
์๋ฅผ ๋ค๋ฉด myproject:myregion:myinstance์ ๋๋ค.
- Cloud SQL ์ธ์ฆ ํ๋ก์ ์์ผ์ด ์์นํ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ญ๋๋ค.
sudo mkdir /cloudsql; sudo chmod 777 /cloudsql
- ์๋น์ค ๊ณ์ ์ ์ฌ์ฉํ์ฌ Cloud SQL ์ธ์ฆ ํ๋ก์๋ฅผ ์ธ์ฆํ๋ ๊ฒฝ์ฐ ์๋น์ค ๊ณ์ ์ ๋ง๋ค ๋ ์์ฑ๋ ๋น๊ณต๊ฐ ํค ํ์ผ์ ํด๋ผ์ด์ธํธ ๋จธ์ ๋ด ์์น๋ฅผ ๊ธฐ๋กํด ๋ก๋๋ค.
- ์ 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 ์ธ์ฆ ํ๋ก์ ์ธ์ฆ ์ต์ ์ ์ฐธ์กฐํ์ธ์.
- Google Cloud SDK ์ธ์ฆ ์ฌ์ฉ
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 ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐํฉ๋๋ค.
- MySQL Community Server ๋ค์ด๋ก๋ ํ์ด์ง์์ ํ๋ซํผ์ ๋ง๋ MySQL Community Server๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค.
Community Server์ MySQL ํด๋ผ์ด์ธํธ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. - ๋ค์ด๋ก๋ ํ์ด์ง์ ์ง์์ ๋ฐ๋ผ Community Server๋ฅผ ์ค์นํฉ๋๋ค.
MySQL์ ์ค์นํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ MySQL ์ค์น ๋ฐ ์ ๊ทธ๋ ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์.
์ฌ์ฉํ๋ ์ฐ๊ฒฐ ๋ฌธ์์ด์ TCP ์์ผ, UNIX ์์ผ, Docker ์ค์์ ๋ฌด์์ ์ฌ์ฉํ์ฌ Cloud SQL ์ธ์ฆ ํ๋ก์๋ฅผ ์์ํ๋์ง์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
TCP ์์ผ
- mysql ํด๋ผ์ด์ธํธ๋ฅผ ์์ํฉ๋๋ค.
MySQL 8.4 ์ธ์คํด์ค์ ์ฐ๊ฒฐํ๋ ๊ฒฝ์ฐ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.mysql -u USERNAME -p --host 127.0.0.1
mysql -u USERNAME -p --host 127.0.0.1 --get-server-public-key
TCP ์์ผ์ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐํ๋ฉด
127.0.0.1
์ ํตํด Cloud SQL ์ธ์ฆ ํ๋ก์์ ์ก์ธ์คํฉ๋๋ค. - ๋ฉ์์ง๊ฐ ํ์๋๋ฉด ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํฉ๋๋ค.
- mysql ํ๋กฌํํธ๊ฐ ํ์๋ฉ๋๋ค.
Unix ์์ผ ์ฌ์ฉ
- mysql ํด๋ผ์ด์ธํธ๋ฅผ ์์ํฉ๋๋ค.
mysql -u USERNAME -p -S /cloudsql/INSTANCE_CONNECTION_NAME
์ฐธ๊ณ : MySQL 8.4 ์ธ์คํด์ค์ ๋ํ UNIX ์์ผ ์ฐ๊ฒฐ์๋ Cloud SQL ์ธ์ฆ ํ๋ก์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํฉ๋๋ค.
- 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 ์ธ์ฆ ํ๋ก์๋ ๋ค์์ ๊ฐ ํญ๋ชฉ์ ๋ค์ ์์๋๋ก ํ์ธํ์ฌ ์ฒซ ๋ฒ์งธ๋ก ๋ฐ๊ฒฌ๋ ํญ๋ชฉ์ผ๋ก ์ธ์ฆ์ ์๋ํฉ๋๋ค.
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 ์ญํ ์ ์ฐธ์กฐํ์ธ์.
์ก์ธ์ค ํ ํฐ์ผ๋ก ์ ๊ณต๋ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด
์ก์ธ์ค ํ ํฐ์ ๋ง๋ค๊ณ--token
ํ๋๊ทธ์ ํจ๊ปcloud-sql-proxy
๋ช ๋ น์ด๋ฅผ ํธ์ถํ์ฌ OAuth 2.0 ์ก์ธ์ค ํ ํฐ์ผ๋ก ์ค์ ํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค../cloud-sql-proxy --token ACCESS_TOKEN \ INSTANCE_CONNECTION_NAME
ํ๊ฒฝ ๋ณ์๋ก ์ ๊ณต๋ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด
์ด ์ต์ ์--credentials-file
๋ช ๋ น์ค ์ธ์๋ฅผ ์ฌ์ฉํ๋ ๋์GOOGLE_APPLICATION_CREDENTIALS
ํ๊ฒฝ ๋ณ์์ ์ค์ ํ JSON ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด ํ์ผ์ ์ง์ ํ๋ค๋ ์ ์ ์ ์ธํ๋ฉด--credentials-file
ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ์ ์ฌํฉ๋๋ค.์ธ์ฆ๋ gcloud CLI ํด๋ผ์ด์ธํธ์ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด
gcloud CLI๋ฅผ ์ค์นํ๊ณ ๊ฐ์ธ ๊ณ์ ์ผ๋ก ์ธ์ฆํ ๊ฒฝ์ฐ Cloud SQL ์ธ์ฆ ํ๋ก์์์ ๋์ผํ ๊ณ์ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ ํนํ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ค๋นํ๊ณ ์คํํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
Cloud SQL ์ธ์ฆ ํ๋ก์์์ gcloud CLI ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ฌ์ฉํ๋๋ก ์ฌ์ฉ ์ค์ ํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ gcloud CLI๋ฅผ ์ธ์ฆํฉ๋๋ค.
gcloud auth application-default login
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 ์ธ์คํด์ค๊ฐ ํฌํจ๋ ํ๋ก์ ํธ์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
ํ๊ฒฝ์ ๊ธฐ๋ณธ ์๋น์ค ๊ณ์
Cloud SQL ์ธ์ฆ ํ๋ก์๊ฐ ์์์ ์ค๋ช ํ ์์น์์ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์๋ ๊ฒฝ์ฐ ์๋ฒ ๊ฐ ํ๋ก๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ธ์ฆ ์ค์ ์ ์ค๋ช ๋ ๋ก์ง์ ๋ฐ๋ฆ ๋๋ค. ์ผ๋ถ ํ๊ฒฝ(์: Compute Engine, App Engine ๋ฑ)์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ์ฆํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ณธ ์๋น์ค ๊ณ์ ์ ์ ๊ณตํฉ๋๋ค. ๊ธฐ๋ณธ ์๋น์ค ๊ณ์ ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ด ๊ณ์ ์๋ ์ญํ ๋ฐ ๊ถํ์ ์ค๋ช ๋ ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค. Google Cloud์ ์ธ์ฆ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ธ์ฆ ๊ฐ์๋ฅผ ์ฐธ์กฐํ์ธ์.
์๋น์ค ๊ณ์ ๋ง๋ค๊ธฐ
- Google Cloud ์ฝ์์์ ์๋น์ค ๊ณ์ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
- Cloud SQL ์ธ์คํด์ค๊ฐ ํฌํจ๋ ํ๋ก์ ํธ๋ฅผ ์ ํํฉ๋๋ค.
- ์๋น์ค ๊ณ์ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ์๋น์ค ๊ณ์ ์ด๋ฆ ํ๋์ ์๋น์ค ๊ณ์ ์ ์ค๋ช ์ด ํฌํจ๋ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
- ์๋น์ค ๊ณ์ ID๋ฅผ ๊ณ ์ ํ๊ณ ์ธ์ํ ์ ์๋ ๊ฐ์ผ๋ก ๋ณ๊ฒฝํ ํ ๋ง๋ค๊ณ ๊ณ์ํ๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
-
์ญํ ์ ํ ํ๋๋ฅผ ํด๋ฆญํ๊ณ ๋ค์ ์ญํ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
- Cloud SQL > Cloud SQL ํด๋ผ์ด์ธํธ
- Cloud SQL > Cloud SQL ํธ์ง์
- Cloud SQL > Cloud SQL ๊ด๋ฆฌ์
- ์๋ฃ๋ฅผ ํด๋ฆญํ์ฌ ์๋น์ค ๊ณ์ ๋ง๋ค๊ธฐ๋ฅผ ๋ง์นฉ๋๋ค.
- ์ ์๋น์ค ๊ณ์ ์ ์์ ๋ฉ๋ด๋ฅผ ํด๋ฆญํ ํ ํค ๊ด๋ฆฌ๋ฅผ ์ ํํฉ๋๋ค.
- ํค ์ถ๊ฐ ๋๋กญ๋ค์ด ๋ฉ๋ด๋ฅผ ํด๋ฆญํ ํ ์ ํค ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
-
ํค ์ ํ์ด 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 ํ ๋น๋ ์ฆ๊ฐ๋ฅผ ์์ฒญํฉ๋๋ค. ์์ ์ ํ ๋น๋ ์ค๋ฅ๊ฐ ํ์๋๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ ๋ฐฐํฌํ์ฌ ํ๋ก์๋ฅผ ๋ค์ ์์ํด์ผ ํฉ๋๋ค. ์์ ํ ํ ๋น๋ ์ค๋ฅ๊ฐ ํ์๋๋ฉด ์ฌ๋ฐฐํฌ๊ฐ ๋ถํ์ํฉ๋๋ค.
๋ค์ ๋จ๊ณ
- Cloud SQL ์ธ์ฆ ํ๋ก์ ์์ธํ ์์๋ณด๊ธฐ
- Identity and Access Management(IAM) ์์ธํ ์์๋ณด๊ธฐ
- ์๋น์ค ๊ณ์ ์์ธํ ์์๋ณด๊ธฐ
- Cloud SQL ์ธ์คํด์ค์ ๋ ๊ฐ์ง ์ก์ธ์ค ์ ์ด ์์ค ์์๋ณด๊ธฐ
- ์ฌ์ฉ์ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง๋ค๊ธฐ
- ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ธ์คํด์ค๋ก ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ ์์๋ณด๊ธฐ
- MySQL ํด๋ผ์ด์ธํธ ์์๋ณด๊ธฐ
- ์ง์ ์ต์ ์์๋ณด๊ธฐ