๊ฐ์
์ด ํ์ด์ง์์๋ Database Migration Service API๋ฅผ ์ฌ์ฉํ์ฌ PostgreSQL ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ PostgreSQL ๋์์ ์ฐ๊ฒฐ ํ๋กํ์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์์๋ด ๋๋ค.
Database Migration Service API๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. REST API ํธ์ถ์ ์ํํ๊ฑฐ๋ Google Cloud CLI(CLI)๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
gcloud
๋ฅผ ์ฌ์ฉํ์ฌ Database Migration Service ์ฐ๊ฒฐ ํ๋กํ์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋๋ต์ ์ธ ์ ๋ณด๋ฅผ ๋ณด๋ ค๋ฉด ์ฌ๊ธฐ๋ฅผ ํด๋ฆญํ์ธ์.
PostgreSQL ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐ ํ๋กํ ๋ง๋ค๊ธฐ
๋ค์์ PostgreSQL ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐ ํ๋กํ์ ๋ง๋๋ ์์ฒญ์ ๋ณด์ฌ์ค๋๋ค.
REST
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- region: ํ๋ก์ ํธ ๋ฆฌ์
- connection-profile-id: ์ฐ๊ฒฐ ํ๋กํ ID
- connection-profile-display-name: ์ฐ๊ฒฐ ํ๋กํ ํ์ ์ด๋ฆ
- host-ip-address: ์์ค IP ์ฃผ์
- username: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์ ์ด๋ฆ
- password: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์ ๋น๋ฐ๋ฒํธ
- client-key: ํด๋ผ์ด์ธํธ ์ธ์ฆ์์ ์ฐ๊ฒฐ๋ ์ํธํ๋์ง ์์ PKCS#1 ๋๋ PKCS#8 PEM ์ธ์ฝ๋ฉ ๋น๊ณต๊ฐ ํค์
๋๋ค. ์ด ํ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
clientCertificate
ํ๋๋ ํ์์ ๋๋ค. - client-certificate: ๋ณต์ ๋ณธ์ด ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ์ธ์ฆํ ๋ ์ฌ์ฉํ x509 PEM ์ธ์ฝ๋ฉ ์ธ์ฆ์์
๋๋ค.์ด ํ๋๋ฅผ ์ฌ์ฉํ๋ฉด
clientKey
ํ๋๊ฐ ํ์์ ๋๋ค. - ca-certificate: (ํ์์ฌํญ) ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ์ธ์ฆ์์ ์๋ช ํ CA์ x509 PEM ์ธ์ฝ๋ฉ ์ธ์ฆ์์ ๋๋ค. ๋ณต์ ๋ณธ์ ์ด ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฐ๋ฅธ ํธ์คํธ์ ์ฐ๊ฒฐ๋๋์ง ํ์ธํฉ๋๋ค.
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://datamigration.googleapis.com/v1/projects/project-id/locations/region/connectionProfiles?connectionProfileId=connection-profile-id
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "displayName": "connection-profile-display-name", "postgres": { "host": "host-ip-address", "port": 5432, "username": "username", "password": "password", "ssl": { "clientKey": "client-key", "clientCertificate": "client-certificate", "caCertificate": "ca-certificate" } } }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
{ "name": "projects/project-id/locations/region/operations/operation-1591973161667-5a7e422cb0ba4-3004980d-2ae97165", "metadata": { "@type": "type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata", "createTime": "2020-06-12T14:46:01.744267779Z", "target": "projects/project-id/locations/region/connectionProfiles/connection-profile-id", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
gcloud
gcloud
๋ฅผ ์ฌ์ฉํ์ฌ Database Migration Service ์ฐ๊ฒฐ ํ๋กํ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํ ๋๋ต์ ์ธ ์ ๋ณด๋ฅผ ๋ณด๋ ค๋ฉด ์ฌ๊ธฐ๋ฅผ ํด๋ฆญํ์ธ์.
์์ฑ ํ connectionProfiles/get
๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์ฐ๊ฒฐ ํ๋กํ์ ๊ดํ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
REST
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- region: ํ๋ก์ ํธ ๋ฆฌ์
- connection-profile-id: ์ฐ๊ฒฐ ํ๋กํ ID
HTTP ๋ฉ์๋ ๋ฐ URL:
GET https://datamigration.googleapis.com/v1/projects/project-id/locations/region/connectionProfiles/connection-profile-id
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
{ "name": "projects/project-id/locations/region/connectionProfiles/connection-profile-id", "createTime": "2019-12-22T16:17:37.159786963Z", "updateTime": "2019-12-24T13:13:39.455857411Z", "state": "READY", "displayName": "connection-profile-display-name", "postgres": { "host": "host-ip-address", "port": 5432, "username": "username" } }
gcloud
gcloud
๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ ํ๋กํ์ ๋ํ ์ ๋ณด๋ฅผ ๊ฒ์ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ๋ฅผ ํด๋ฆญํ์ธ์.
PostgreSQL์ฉ Cloud SQL ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐ ํ๋กํ ๋ง๋ค๊ธฐ
๋ค์์ PostgreSQL์ฉ Cloud SQL ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐ ํ๋กํ์ ๋ง๋๋ ์์ฒญ์ ๋ณด์ฌ์ค๋๋ค. ์ด ์์์๋ Cloud SQL ๊ด๋ฆฌ ๋ ์ด์ด๊ฐ ์๋ PostgreSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง์ ์ฐ๊ฒฐํ๋ฏ๋ก PostgreSQL ์ฐ๊ฒฐ ํ๋กํ์ ์ฌ์ฉํฉ๋๋ค.
Cloud SQL์ ์ฌ์ฉํ์ฌ ์์ค์ ๋ณต์ ๋ณธ ๊ฐ์ ํ์ด๋ง์ ๋ง๋ค๋ ค๋ฉด Cloud SQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ธ์คํด์ค ID๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค. Cloud SQL Admin API์ databases/list
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์คํด์ค ID ๊ฐ์ ์ฐพ์ ์ ์์ต๋๋ค.
REST
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- region: ํ๋ก์ ํธ ๋ฆฌ์
- connection-profile-id: ์ฐ๊ฒฐ ํ๋กํ ID
- connection-profile-display-name: ์ฐ๊ฒฐ ํ๋กํ ํ์ ์ด๋ฆ
- host-ip-address: ์์ค IP ์ฃผ์
- username: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์ ์ด๋ฆ
- password: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์ ๋น๋ฐ๋ฒํธ
- cloud-sql-instance-id: Cloud SQL ์ธ์คํด์ค ID
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://datamigration.googleapis.com/v1/projects/project-id/locations/region/connectionProfiles?connectionProfileId=connection-profile-id
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "displayName": "connection-profile-display-name", "postgres": { "host": "host-ip-address", "port": 5432, "username": "username", "password": "password", "cloud_sql_id": "cloud-sql-instance-id" } }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
{ "name": "projects/project-id/locations/region/operations/operation-1591973161667-5a7e422cb0ba4-3004980d-2ae97165", "metadata": { "@type": "type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata", "createTime": "2020-06-12T14:46:01.744267779Z", "target": "projects/project-id/locations/region/connectionProfiles/connection-profile-id", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
gcloud
gcloud
๋ฅผ ์ฌ์ฉํ์ฌ Database Migration Service ์ฐ๊ฒฐ ํ๋กํ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํ ๋๋ต์ ์ธ ์ ๋ณด๋ฅผ ๋ณด๋ ค๋ฉด ์ฌ๊ธฐ๋ฅผ ํด๋ฆญํ์ธ์.
gcloud
๋ฅผ ์ฌ์ฉํ์ฌ PostgreSQL์ฉ Cloud SQL ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐ ํ๋กํ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ๋ฅผ ํด๋ฆญํ์ธ์.
PostgreSQL์ฉ Cloud SQL ๋์์ ์ฐ๊ฒฐ ํ๋กํ ๋ง๋ค๊ธฐ
๋ค์์ PostgreSQL์ฉ Cloud SQL ๋์์ ์ฐ๊ฒฐ ํ๋กํ์ ๋ง๋๋ ์์ฒญ์ ๋ณด์ฌ์ค๋๋ค. Database Migration Service๋ ์ด ์์ฒญ์ ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ฌ ์ PostgreSQL์ฉ Cloud SQL ์ธ์คํด์ค๋ฅผ ๋ง๋ญ๋๋ค.
REST
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- region: ํ๋ก์ ํธ ๋ฆฌ์
- connection-profile-id: ์ฐ๊ฒฐ ํ๋กํ ID
- connection-profile-display-name: ์ฐ๊ฒฐ ํ๋กํ ํ์ ์ด๋ฆ
- database-version: ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฒ์ . ์๋ฅผ ๋ค๋ฉด POSTGRES_12์ ๋๋ค.
- tier: ๋จธ์ ์ ํ์ ๋๋ค. ์๋ฅผ ๋ค๋ฉด db-custom-1-4096์ ๋๋ค.
- data-disk-type: ๋ฐ์ดํฐ ๋์คํฌ ์ ํ์ ๋๋ค. ์๋ฅผ ๋ค๋ฉด PD_SSD์ ๋๋ค.
- data-disk-size-gb: ๋ฐ์ดํฐ ๋์คํฌ ํฌ๊ธฐ(GB)์ ๋๋ค. ์๋ฅผ ๋ค์ด 20์ ๋๋ค.
- zone: ํ๋ก์ ํธ ๋ฆฌ์ ์ ์์ญ
- cmek_key_name: ์ ํ์ฌํญ: ๊ณ ๊ฐ ๊ด๋ฆฌ ์ํธํ ํค (CMEK)์ ์ ์ฒด ๊ฒฝ๋ก ๋ฐ ์ด๋ฆ์ ๋๋ค. ์: 'projects/project-id/locations/location/keyRings/ring/cryptoKeys/customer-managed-encryption-key'
Google Cloud ๋ด์ ์ ์ฅ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ Google์ด ์ํธํ๋ ์์ฒด ๋ฐ์ดํฐ์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋์ผํ ๊ฐํ ํค ๊ด๋ฆฌ ์์คํ ์ ์ฌ์ฉํ์ฌ ์ ์ฅ ์ํ์์ ์ํธํ๋ฉ๋๋ค. ์ด๋ฌํ ํค ๊ด๋ฆฌ ์์คํ ์ ์๊ฒฉํ ํค ์ก์ธ์ค ์ ์ด ๋ฐ ๊ฐ์ฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉฐ AES-256 ์ํธํ ํ์ค์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ ์ฅ ๋ฐ์ดํฐ๋ฅผ ์ํธํํฉ๋๋ค. ์ค์ , ๊ตฌ์ฑ ๋๋ ๊ด๋ฆฌ๊ฐ ํ์ํ์ง ์์ต๋๋ค. Google Cloud์ ๊ธฐ๋ณธ ์ ์ฅ ๋ฐ์ดํฐ ์ํธํ๋ ์ํธํ ์๋ฃ์ ๊ท์ ์ค์ ๋๋ ์ง์ญ๊ณผ ๊ด๋ จ๋ ํน์ ์๊ตฌ์ฌํญ์ด ์๋ ์ฌ์ฉ์์๊ฒ ๊ฐ์ฅ ์ ํฉํฉ๋๋ค.
Google Cloud ํ๋ก์ ํธ ๋ด์์ ์ ์ฅ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ํค๋ฅผ ๋ ์ธ๋ฐํ๊ฒ ์ ์ดํด์ผ ํ๋ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด์ ์๋น์ค๋ Cloud Key Management Service (KMS) ๋ด์์ ์ฌ์ฉ์๊ฐ ๊ด๋ฆฌํ๋ ์ํธํ ํค๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ณดํธํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ์ํธํ ํค๋ฅผ ๊ณ ๊ฐ ๊ด๋ฆฌ ์ํธํ ํค (CMEK)๋ผ๊ณ ํฉ๋๋ค. CMEK๋ก Database Migration Service์ ๋ฐ์ดํฐ๋ฅผ ๋ณดํธํ๋ฉด CMEK๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค.
cmek_key_name
๋งค๊ฐ๋ณ์๋ Database Migration Service๊ฐ ์์ค์์ ๋์์ผ๋ก ์ด์ ๋ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ CMEK๊ฐ ์๋์ง์ ๊ด๋ จ์ด ์์ต๋๋ค. CMEK๋ customer-managed-encryption-key ์๋ฆฌํ์์๋ก ํํ๋ฉ๋๋ค.
ring ์๋ฆฌํ์์๋ CMEK์ ํค๋ง์ ๋ํ๋ ๋๋ค. ํค๋ง์ ํน์ Google Cloud ์์น์ ํค๋ฅผ ๊ตฌ์ฑํ๊ณ ํค ๊ทธ๋ฃน์ ์ก์ธ์ค ์ ์ด๋ฅผ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ค๋๋ค. ํค๋ง ์ด๋ฆ์ Google Cloud ํ๋ก์ ํธ ์ ์ฒด์์ ๊ณ ์ ํ ํ์๋ ์์ง๋ง ์ง์ ๋ ์์น ๋ด์์ ๊ณ ์ ํด์ผ ํฉ๋๋ค. ํค๋ง์ ๋ํ ์์ธํ ๋ด์ฉ์ Cloud KMS ๋ฆฌ์์ค๋ฅผ ์ฐธ๊ณ ํ์ธ์.
์ฐ๊ฒฐ ํ๋กํ์ ๋ง๋๋ ๊ณผ์ ์์ Database Migration Service๋ CMEK๊ฐ ์กด์ฌํ๋ฉฐ Database Migration Service์ ํค๋ฅผ ์ฌ์ฉํ ๊ถํ์ด ์๋์ง ํ์ธํฉ๋๋ค.
์ด๋ฌํ ์กฐ๊ฑด ์ค ํ๋๋ผ๋ ์ถฉ์กฑ๋์ง ์์ผ๋ฉด ๋ค์ ์ค๋ฅ ๋ฉ์์ง๊ฐ ๋ฐํ๋ฉ๋๋ค.
CMEK_DOES_NOT_EXIST_OR_MISSING_PERMISSIONS
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์ ๊ณตํ ํค๊ฐ ์กด์ฌํ๋์ง ๊ทธ๋ฆฌ๊ณ Database Migration Service ์๋น์ค ๊ณ์ ์ ํด๋น ํค์ ๋ํ cloudkms.cryptoKeys.get
๊ถํ์ด ์๋์ง ํ์ธํฉ๋๋ค.
๋ฐ์ดํฐ๋ฅผ ์ํธํํ๊ธฐ ์ํด CMEK ๋์ Google Cloud์ ๋ด๋ถ ํค ๊ด๋ฆฌ ์์คํ
์ ์ฌ์ฉํ๋ ค๋ฉด API ์์ฒญ์ cmek_key_name
๋งค๊ฐ๋ณ์์ ๊ฐ์ ํฌํจํ์ง ๋ง์ธ์.
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://datamigration.googleapis.com/v1/projects/project-id/locations/region/connectionProfiles?connectionProfileId=connection-profile-id
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "displayName": "connection-profile-display-name", "cloudsql": { "settings": { "databaseVersion": "database-version", "tier": "machine-type", "storageAutoResizeLimit": 0, "activationPolicy": "ALWAYS", "ipConfig": { "authorizedNetworks": [], "enableIpv4": true, "privateNetwork": null }, "autoStorageIncrease": false, "dataDiskType": "data-disk-type", "dataDiskSizeGb": "data-disk-size", "zone": "zone", "sourceId": "projects/project-id/locations/region/connectionProfiles/connection-profile-id", "cmek_key_name": "projects/project-id/locations/location/keyRings/ring/cryptoKeys/customer-managed-encryption-key" } } }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
{ "name": "projects/project-id/locations/region/operations/operation-1591975557292-5a7e4b195623c-e350e3da-713dee7d", "metadata": { "@type": "type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata", "createTime": "2020-06-12T15:25:57.430715421Z", "target": "projects/project-id/locations/region/connectionProfiles/connection-profile-id", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
gcloud
gcloud
๋ฅผ ์ฌ์ฉํ์ฌ Database Migration Service ์ฐ๊ฒฐ ํ๋กํ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํ ๋๋ต์ ์ธ ์ ๋ณด๋ฅผ ๋ณด๋ ค๋ฉด ์ฌ๊ธฐ๋ฅผ ํด๋ฆญํ์ธ์.
์ฐ๊ฒฐ ํ๋กํ ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ
REST
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- region: ํ๋ก์ ํธ ๋ฆฌ์
- connection-profile-id: ์ฐ๊ฒฐ ํ๋กํ ID
HTTP ๋ฉ์๋ ๋ฐ URL:
GET https://datamigration.googleapis.com/v1/projects/project-id/locations/region/connectionProfiles/connection-profile-id
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
{ "name": "projects/project-id/locations/region/connectionProfiles/connection-profile-id", "createTime": "2019-12-22T16:17:37.159786963Z", "updateTime": "2019-12-24T13:13:39.455857411Z", "state": "READY", "displayName": "connection-profile-display-name", "postgres": { "host": "host-ip-address", "port": 5432, "username": "username" } }
gcloud
gcloud
๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ ํ๋กํ์ ๋ํ ์ ๋ณด๋ฅผ ๊ฒ์ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ๋ฅผ ํด๋ฆญํ์ธ์.
์ฐ๊ฒฐ ํ๋กํ ๋์ด
๋ค์์ ๋ชจ๋ ์ฐ๊ฒฐ ํ๋กํ์ ๋ํ ์ ๋ณด๋ฅผ ๊ฒ์ํ๋ ์์ฒญ์ ๋ณด์ฌ์ค๋๋ค.
REST
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- region: ํ๋ก์ ํธ ๋ฆฌ์
orderBy:
์ด ํํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ํน์ ๋ฆฌ์ ์ ๋ชจ๋ ์ฐ๊ฒฐ ํ๋กํ ๋ชฉ๋ก์ ์ํ๋ฒณ์์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ดorderBy=name
ํํฐ๋ ๋ชจ๋ ์ฐ๊ฒฐ ํ๋กํ์ ์ด๋ฆ์์ผ๋ก ์ํ๋ฒณ์์ผ๋ก ๋ฐํํฉ๋๋ค.-
pageSize:
์ด ํํฐ๋ฅผ ์ฌ์ฉํ์ฌ Database Migration Service๊ฐ ํ์ด์ง์์ ๊ฐ์ ธ์ ํ์ํ๋ ์ต๋ ์ฐ๊ฒฐ ํ๋กํ ์๋ฅผ ์ง์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ดpageSize=10
๋ฅผ ์ค์ ํ๋ฉด Database Migration Service๋ ํ์ด์ง์ ๋ํด ์ต๋ 10๊ฐ์ ์ฐ๊ฒฐ ํ๋กํ์ ๋ฐํํฉ๋๋ค.
์ฐ๊ฒฐ ํ๋กํ์ด 10๊ฐ๋ฅผ ์ด๊ณผํ๋ฉด ๋ค๋ฅธ ํ์ด์ง์ ํ์๋ฉ๋๋ค. ๊ฐ ํ์ด์ง ๋์ nextPageToken
๋งค๊ฐ๋ณ์์ ๊ณ ์ ์๋ณ์๊ฐ ํ์๋ฉ๋๋ค. ์๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ ํ์ด์ง์ ์ฐ๊ฒฐ ํ๋กํ ๋ชฉ๋ก์ ๊ฐ์ ธ์ต๋๋ค.
HTTP ๋ฉ์๋ ๋ฐ URL:
GET https://datamigration.googleapis.com/v1/projects/project-id/locations/region/connectionProfiles
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
{ "connectionProfiles": [ { "name": "projects/project-id/locations/region/connectionProfiles/name-of-first-connection-profile", "createTime": "2019-12-22T16:17:37.159786963Z", "updateTime": "2019-12-24T13:13:39.455857411Z", "state": "READY", "displayName": "display-name-of-first-connection-profile", "postgres": { "host": "host-ip-address-of-first-connection-profile", "port": port-number-of-first-connection-profile, "username": "username-of-first-connection-profile", "password_set": "true" } } { "name": "projects/project-id/locations/region/connectionProfiles/name-of-second-connection-profile", "createTime": "2020-11-21T19:22:25.153824963Z", "updateTime": "2020-11-11T11:15:14.451046111Z", "state": "READY", "displayName": "display-name-of-second-connection-profile", "postgres": { "host": "host-ip-address-of-second-connection-profile", "port": port-number-of-second-connection-profile, "username": "username-of-second-connection-profile", "password_set": "true" } } ] }
gcloud
gcloud
๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ฐ๊ฒฐ ํ๋กํ์ ๋ํ ์ ๋ณด๋ฅผ ๊ฒ์ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ๋ฅผ ํด๋ฆญํ์ธ์.
์ฐ๊ฒฐ ํ๋กํ ์ ๋ฐ์ดํธ
๋ค์์ ๊ธฐ์กด ์ฐ๊ฒฐ ํ๋กํ์ ์ฌ์ฉ์ ์ด๋ฆ ๋ฐ ๋น๋ฐ๋ฒํธ ํ๋๋ฅผ ์
๋ฐ์ดํธํ๋ ์์ฒญ์ ๋ณด์ฌ์ค๋๋ค. ์์ฒญ์์ updateMask
๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ํ๋๋ง ์์ฒญ ๋ณธ๋ฌธ์ ํฌํจํ๋ฉด ๋ฉ๋๋ค.
REST
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- region: ํ๋ก์ ํธ ๋ฆฌ์
- connection-profile-id: ์ฐ๊ฒฐ ํ๋กํ ID
- username: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์ ์ด๋ฆ
- password: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์ ๋น๋ฐ๋ฒํธ
HTTP ๋ฉ์๋ ๋ฐ URL:
PATCH https://datamigration.googleapis.com/v1/projects/project-id/locations/region/connectionProfiles/connection-profile-id?updateMask=postgres.username,postgres.password
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "postgres" { "username": "username", "password": "password" } }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
{ "name": "projects/project-id/locations/region/operations/operation-1591973161667-5a7e422cb0ba4-3004980d-2ae97165", "metadata": { "@type": "type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata", "createTime": "2020-06-12T14:46:01.744267779Z", "target": "projects/project-id/locations/region/connectionProfiles/connection-profile-id", "verb": "update", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
gcloud
gcloud
๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ ํ๋กํ์ ์
๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ๋ฅผ ํด๋ฆญํ์ธ์.
์ฐ๊ฒฐ ํ๋กํ ์ญ์
REST
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- region: ํ๋ก์ ํธ ๋ฆฌ์
- connection-profile-id: ์ฐ๊ฒฐ ํ๋กํ ID
HTTP ๋ฉ์๋ ๋ฐ URL:
DELETE https://datamigration.googleapis.com/v1/projects/project-id/locations/region/connectionProfiles/connection-profile-id
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
{ "name": "projects/project-id/locations/region/operations/operation-1591973161667-5a7e422cb0ba4-3004980d-2ae97165", "metadata": { "@type": "type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata", "createTime": "2020-06-12T14:46:01.744267779Z", "target": "projects/project-id/locations/region/connectionProfiles/connection-profile-id", "verb": "delete", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
gcloud
gcloud
๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ ํ๋กํ์ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ๋ฅผ ํด๋ฆญํ์ธ์.
์ฐ๊ฒฐ ํ๋กํ ๋ฐ ์ฐ๊ฒฐ๋ Cloud SQL ์ธ์คํด์ค ์ญ์
๋ค์์ ๋์ ์ฐ๊ฒฐ ํ๋กํ์ ์ญ์ ํ๊ณ ์ฐ๊ฒฐ๋ Cloud SQL ์ธ์คํด์ค๋ฅผ ์ฐ์ ์ญ์ ํ๋ ์์ฒญ์ ๋ณด์ฌ์ค๋๋ค.
REST
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- project-id: ํ๋ก์ ํธ ID
- region: ํ๋ก์ ํธ ๋ฆฌ์
- connection-profile-id: ์ฐ๊ฒฐ ํ๋กํ ID
HTTP ๋ฉ์๋ ๋ฐ URL:
DELETE https://datamigration.googleapis.com/v1/projects/project-id/locations/region/connectionProfiles/connection-profile-id?force=true
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
{ "name": "projects/project-id/locations/region/operations/operation-1591973161667-5a7e422cb0ba4-3004980d-2ae97165", "metadata": { "@type": "type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata", "createTime": "2020-06-12T14:46:01.744267779Z", "target": "projects/project-id/locations/region/connectionProfiles/connection-profile-id", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
gcloud
gcloud
๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ ํ๋กํ๊ณผ ์ฐ๊ฒฐ๋ Cloud SQL ์ธ์คํด์ค๋ฅผ ๋ชจ๋ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ๋ฅผ ํด๋ฆญํ์ธ์.