概要
このページでは、Database Migration Service API を使用して、PostgreSQL ソース データベースと PostgreSQL 移行先の接続プロファイルを管理する方法について説明します。
Database Migration Service API を使用する方法は 2 つあります。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
を使用して接続プロファイルに関する情報を取得する方法の詳細については、こちらをクリックしてください。
Cloud SQL for PostgreSQL ソース データベースの接続プロファイルを作成する
次のコードは、Cloud SQL for PostgreSQL ソース データベースの接続プロファイルを作成するリクエストを示しています。この例では、Cloud SQL 管理レイヤではなく PostgreSQL データベース エンジンに接続するため、PostgreSQL 接続プロファイルを使用します。
Cloud SQL を使用してソースとレプリカのペアリングを作成するには、Cloud SQL データベースのインスタンス ID を指定する必要があります。インスタンス ID の値は、Cloud SQL Admin API の databases/list
メソッドを使用して確認できます。
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
を使用して Cloud SQL for PostgreSQL ソース データベースの接続プロファイルを作成する方法の詳細については、こちらをクリックしてください。
Cloud SQL for PostgreSQL の移行先の接続プロファイルを作成する
次のコードは、Cloud SQL for PostgreSQL の移行先の接続プロファイルを作成するリクエストを示しています。Database Migration Service は、このリクエストの情報を使用して、新しい Cloud SQL for PostgreSQL インスタンスを作成します。
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)内で管理されている暗号鍵を使用してデータを保護する機能が Database Migration Service により提供されます。こうした暗号鍵は、「顧客管理の暗号鍵(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 は 1 ページに最大 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 インスタンスの両方を削除する方法の詳細については、こちらをクリックしてください。