์ด ํ์ด์ง์์๋ ํด๋ก ์ ๋ํด ์ค๋ช ํ๊ณ ์ธ์คํด์ค๋ฅผ ํด๋ก ํ๋ ๋ฐฉ๋ฒ์ ์๋ดํฉ๋๋ค.
๊ฐ์
Cloud SQL ์ธ์คํด์ค๋ฅผ ํด๋ก ํ๋ฉด ์์ค ์ธ์คํด์ค์ ๋ณต์ฌ๋ณธ์ธ ์ ์ธ์คํด์ค๊ฐ ์์ฑ๋ฉ๋๋ค. ์ ์ธ์คํด์ค๋ ์์ค ์ธ์คํด์ค์ ์์ ํ ๋ ๋ฆฝ์ ์ ๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ(FAQ)
์ง๋ฌธ | ๋ต๋ณ |
---|---|
ํด๋ก ์ด ์ฑ๋ฅ์ ์ํฅ์ ์ฃผ๋์? | ์๋์. ํด๋ก ์ ์์ค ์ธ์คํด์ค์ ์ฑ๋ฅ์๋ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค. |
๋ฐฑ์ ์ด ์ ์ธ์คํด์ค์ ๋ณต์ฌ๋๋์? | ์๋์. ์ ์ธ์คํด์ค๋ ์ ์๋ ๋ฐฑ์ ์ ๋ง๋ญ๋๋ค. ์๋ ๋ฐฑ์ ์ ์์ค ์ธ์คํด์ค์์ ๋ณต์ฌ๋์ง ์์ต๋๋ค. |
์ ์ธ์คํด์ค์ IP ์ฃผ์ ๋๋ ์ฃผ์๋ ๋์ผํ๊ฐ์? | ์๋์. ์ ์ธ์คํด์ค์๋ ์๋ก์ด IP ์ฃผ์ ๋๋ ์ฃผ์๊ฐ ์ง์ ๋ฉ๋๋ค. |
์ ์ธ์คํด์ค์ ๊ตฌ์ฑ ์ค์ ์ ๋์ผํ๊ฐ์? | ์. ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋๊ทธ, ์ฐ๊ฒฐ ์ต์ , ๋จธ์ ์ ํ, ์คํ ๋ฆฌ์ง, ๋ฉ๋ชจ๋ฆฌ ์ค์ ๋ฑ์ ๋์ผํ ์ค์ ์ด ์ ์ธ์คํด์ค์ ์ ์ฉ๋ฉ๋๋ค. |
๋ณต์ ๋ณธ์ด ์ ์ธ์คํด์ค์ ๋ณต์ฌ๋๋์? | ์๋์. ์ ์ธ์คํด์ค์ ์ ๋ณต์ ๋ณธ์ ๋ง๋ค์ด์ผ ํฉ๋๋ค. |
๋ณต์ ๋ณธ์ ํด๋ก ํ ์ ์๋์? | ์๋์. ๋ณต์ ๋ณธ์ ํด๋ก ํ ์ ์์ต๋๋ค. |
์ด์ ์์ ์์ ํด๋ก ์ ๋ง๋ค ์ ์๋์? | ์. point-in-time recovery๋ ํด๋ก ํ์ฌ ์ด์ ์์ ์ ์ธ์คํด์ค๋ฅผ ๋ณต์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์์์ด ๋ฐ์ํ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ณต๊ตฌํ ์ ์์ต๋๋ค. |
์์ค ์ธ์คํด์ค์ ์ ์ง๋ณด์ ์ค์ ์ด ํด๋ก ์ธ์คํด์ค์ ์๋์ผ๋ก ๋ณต์ฌ๋๋์? | ์๋์. ํด๋ก ์ธ์คํด์ค์ ์ ์ง๋ณด์ ์ค์ ์ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค. |
ํด๋ก ์ด์๋ ์ธ์คํด์ค๋ฅผ ํด๋ก ํ ์ ์๋์? | ์. ๋ค๋ฅธ ์ธ์คํด์ค์์ ํด๋ก ๋ ์ธ์คํด์ค๋ ํด๋ก ํ ์ ์์ต๋๋ค. |
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์๊ฐ ์ ์ธ์คํด์ค์ ๋ณต์ฌ๋๋์? | ์. ํ์ง๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์ ๋น๋ฐ๋ฒํธ๋ ๋ณต์ฌ๋์ง ์์ผ๋ฏ๋ก ๋ค์ ๋ง๋ค์ด์ผ ํฉ๋๋ค. |
์ธ์คํด์ค ํด๋ก
Google Cloud ์ฝ์, gcloud CLI, Terraform ๋๋ API๋ฅผ ์ฌ์ฉํ์ฌ Cloud SQL ์ธ์คํด์ค๋ฅผ ํด๋ก ํ ์ ์์ต๋๋ค.
์ฝ์
-
Google Cloud ์ฝ์์์ Cloud SQL ์ธ์คํด์ค ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
- ํด๋ก ํ ์ธ์คํด์ค์ ํ์ ์ฐพ์ต๋๋ค.
- ์์ ์ด์์ ์ถ๊ฐ ์์ ๋ฉ๋ด๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ํด๋ก ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ํด๋ก ๋ง๋ค๊ธฐ ํ์ด์ง์์ ํ์ํ ๊ฒฝ์ฐ ์ธ์คํด์ค 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 ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ณ๊ฒฝ์ฌํญ ์ ์ฉ
ํ๋ก์ ํธ์ Terraform ๊ตฌ์ฑ์ ์ ์ฉํ๋ ค๋ฉด Google Cloud ๋ค์ ์น์ ์ ๋จ๊ณ๋ฅผ ์๋ฃํ์ธ์.
Cloud Shell ์ค๋น
- Cloud Shell์ ์คํํฉ๋๋ค.
-
Terraform ๊ตฌ์ฑ์ ์ ์ฉํ ๊ธฐ๋ณธ Google Cloud ํ๋ก์ ํธ๋ฅผ ์ค์ ํฉ๋๋ค.
์ด ๋ช ๋ น์ด๋ ํ๋ก์ ํธ๋น ํ ๋ฒ๋ง ์คํํ๋ฉด ๋๋ฉฐ ์ด๋ค ๋๋ ํฐ๋ฆฌ์์๋ ์คํํ ์ ์์ต๋๋ค.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Terraform ๊ตฌ์ฑ ํ์ผ์์ ๋ช ์์ ๊ฐ์ ์ค์ ํ๋ฉด ํ๊ฒฝ ๋ณ์๊ฐ ์ฌ์ ์๋ฉ๋๋ค.
๋๋ ํฐ๋ฆฌ ์ค๋น
๊ฐ Terraform ๊ตฌ์ฑ ํ์ผ์๋ ์์ฒด ๋๋ ํฐ๋ฆฌ(๋ฃจํธ ๋ชจ๋์ด๋ผ๊ณ ๋ ํจ)๊ฐ ์์ด์ผ ํฉ๋๋ค.
-
Cloud Shell์์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ํด๋น ๋๋ ํฐ๋ฆฌ ๋ด์ ์ ํ์ผ์ ๋ง๋์ธ์. ํ์ผ ์ด๋ฆ์๋
.tf
ํ์ฅ์๊ฐ ์์ด์ผ ํฉ๋๋ค(์:main.tf
). ์ด ํํ ๋ฆฌ์ผ์์๋ ํ์ผ์main.tf
๋ผ๊ณ ํฉ๋๋ค.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
ํํ ๋ฆฌ์ผ์ ๋ฐ๋ผ ํ๋ ๊ฒฝ์ฐ ๊ฐ ์น์ ์ด๋ ๋จ๊ณ์์ ์ํ ์ฝ๋๋ฅผ ๋ณต์ฌํ ์ ์์ต๋๋ค.
์ํ ์ฝ๋๋ฅผ ์๋ก ๋ง๋
main.tf
์ ๋ณต์ฌํฉ๋๋ค.ํ์ํ ๊ฒฝ์ฐ GitHub์์ ์ฝ๋๋ฅผ ๋ณต์ฌํฉ๋๋ค. ์ด๋ Terraform ์ค๋ํซ์ด ์๋ ํฌ ์๋ ์๋ฃจ์ ์ ์ผ๋ถ์ธ ๊ฒฝ์ฐ์ ๊ถ์ฅ๋ฉ๋๋ค.
- ํ๊ฒฝ์ ์ ์ฉํ ์ํ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฒํ ํ๊ณ ์์ ํฉ๋๋ค.
- ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฅํฉ๋๋ค.
-
Terraform์ ์ด๊ธฐํํฉ๋๋ค. ์ด ์์
์ ๋๋ ํฐ๋ฆฌ๋น ํ ๋ฒ๋ง ์ํํ๋ฉด ๋ฉ๋๋ค.
terraform init
์ํ๋ ๊ฒฝ์ฐ ์ต์ Google ๊ณต๊ธ์ ์ฒด ๋ฒ์ ์ ์ฌ์ฉํ๋ ค๋ฉด
-upgrade
์ต์ ์ ํฌํจํฉ๋๋ค.terraform init -upgrade
๋ณ๊ฒฝ์ฌํญ ์ ์ฉ
-
๊ตฌ์ฑ์ ๊ฒํ ํ๊ณ Terraform์์ ๋ง๋ค๊ฑฐ๋ ์
๋ฐ์ดํธํ ๋ฆฌ์์ค๊ฐ ์์๊ณผ ์ผ์นํ๋์ง ํ์ธํฉ๋๋ค.
terraform plan
ํ์์ ๋ฐ๋ผ ๊ตฌ์ฑ์ ์์ ํฉ๋๋ค.
-
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํ๊ณ ํ๋กฌํํธ์
yes
๋ฅผ ์ ๋ ฅํ์ฌ Terraform ๊ตฌ์ฑ์ ์ ์ฉํฉ๋๋ค.terraform apply
Terraform์ '์ ์ฉ ์๋ฃ' ๋ฉ์์ง๊ฐ ํ์๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค.
- ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ ค๋ฉด Google Cloud ํ๋ก์ ํธ๋ฅผ ์ฝ๋๋ค. Google Cloud ์ฝ์์์ UI์ ๋ฆฌ์์ค๋ก ์ด๋ํ์ฌ Terraform์ด ๋ฆฌ์์ค๋ฅผ ๋ง๋ค์๊ฑฐ๋ ์ ๋ฐ์ดํธํ๋์ง ํ์ธํฉ๋๋ค.
๋ณ๊ฒฝ์ฌํญ ์ญ์
๋ณ๊ฒฝ์ฌํญ์ ์ญ์ ํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
- Terraform ๊ตฌ์ฑ ํ์ผ์์ ์ญ์ ๋ณดํธ๋ฅผ ์ฌ์ฉ ์ค์งํ๋ ค๋ฉด
deletion_protection
์ธ์๋ฅผfalse
๋ก ์ค์ ํฉ๋๋ค.deletion_protection = "false"
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํ๊ณ ํ๋กฌํํธ์
yes
๋ฅผ ์ ๋ ฅํ์ฌ ์ ๋ฐ์ดํธ๋ Terraform ๊ตฌ์ฑ์ ์ ์ฉํฉ๋๋ค.terraform apply
-
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ๊ณ ํ๋กฌํํธ์
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 ์ธ์คํด์ค์์ ๋ชจ๋ |
์ค๋ฅ ๋ฉ์์ง: 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 ๋ฒ์๋ฅผ ์ง์ ํ์ง ์์๊ณ ์์ค ์ธ์คํด์ค๊ฐ ์ง์ ๋ ๋ฒ์๋ก ์์ฑ๋์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ํด๋ก ๋ ์ธ์คํด์ค๋ ๋ฌด์์ ๋ฒ์๋ก ์์ฑ๋ฉ๋๋ค.
|