接続プロファイルの管理

をご覧ください。

概要

このセクションでは、Datastream API を使用して以下を行う方法を確認します。

  • 移行元 Oracle データベース、移行元 MySQL データベース、移行先の Cloud Storage バケットの接続プロファイルを作成する
  • 接続プロファイルに関する情報を取得、更新、削除する
  • 移行元または移行先の接続プロファイルの構造を確認する

Datastream API を使用する方法は 2 つあります。REST API 呼び出しを行うか、gcloud コマンドライン ツール(CLI)を使用できます。

gcloud を使用して Datastream 接続プロファイルを管理する大まかな情報は、こちらをご覧ください。

移行元 Oracle データベースの接続プロファイルを作成する

次のコードは、Oracle データベースの接続プロファイルの作成リクエストを示し、接続方法に静的 IP アドレス(IP 許可リスト)の使用を指定しています。

REST

POST https://datastream.googleapis.com/v1/projects/[project-id]/locations/
[location]/connectionProfiles?connectionProfileId=[connection-profile-id]
{
  "displayName": "[connection-profile-display-name]",
  "oracleProfile": {
    "hostname": "[host-ip-address]",
    "port": [port],
    "username": "[username]",
    "password": "[password]",
    "databaseService": "[database]"
  },
  "staticServiceIpConnectivity": {}
}

次に例を示します。

POST https://datastream.googleapis.com/v1/projects/myProjectId/locations/
us-central1/connectionProfiles?connectionProfileId=myOracleCP
{
  "displayName": "my Oracle database",
  "oracleProfile": {
    "hostname": "1.2.3.4",
    "port": 1521,
    "username": "admin",
    "password": "12345"
    "databaseService": "ORCL",
  },
  "staticServiceIpConnectivity": {}
}

次のコードは、Oracle データベースの接続プロファイルの作成リクエストを示し、接続方法にプライベート接続(VPC ピアリング)を指定しています。

この方法を使用すると、Datastream と移行元のデータベース(Google Cloud 内部、または VPN や Interconnect を介して接続された外部ソース)との間に安全な接続を確立できます。この通信は VPC ピアリング接続を介して行われます。

POST https://datastream.googleapis.com/v1/projects/[project-id]/locations/
[location]/connectionProfiles?connectionProfileId=[connection-profile-id]
{
  "displayName": "[connection-profile-display-name]",
  "oracleProfile": {
    "hostname": "[host-ip-address]",
    "port": [port],
    "username": "[username]",
    "password": "[password]",
    "databaseService": "[database]"
  },
  "privateConnectivity": {
    "privateConnectionName": "https://datastream.googleapis.com/v1/projects/
    [project-id]/locations/[location]/privateConnections/
    [private-connectivity-configuration-id]"
  }
}

次に例を示します。

POST https://datastream.googleapis.com/v1/projects/myProjectId/locations/
us-central1/connectionProfiles?connectionProfileId=myOracleVPCPeeringCP
{
  "displayName": "my Oracle database",
  "oracleProfile": {
    "hostname": "1.2.3.4",
    "port": 1521,
    "username": "admin",
    "password": "12345"
    "databaseService": "ORCL",
  },
    "privateConnectivity": {
      "privateConnectionName": "https://datastream.googleapis.com/v1/projects/
       myProjectId/locations/us-central1/privateConnections/myPrivateConnection"
  }
}

接続プロファイルが作成されたら、connectionProfiles/get メソッドを呼び出してこのプロファイルに関する情報を表示できます。出力は次のようになります。

{
  "name": "projects/projectId/location/us-central1/connectionProfiles/myOracleVPCPeeringCP",
  "createTime": "2019-12-22T16:17:37.159786963Z",
  "updateTime": "2019-12-22T16:17:37.159786963Z",
  "displayName": "my Oracle database",
  "oracleProfile": {
    "hostname": "1.2.3.4",
    "port": 1521,
    "databaseService": "ORCL",
    "username": "admin"
  },
  "privateConnectivity": {
    "privateConnectionName": "https://datastream.googleapis.com/v1/projects/
     myProjectId/locations/us-central1/privateConnections/myPrivateConnection"
  }
}

移行元 MySQL データベースの接続プロファイルを作成する

次のコードは、MySQL データベースの接続プロファイルの作成リクエストを示し、接続方法に IP アドレス(IP 許可リスト)の使用を指定しています。

REST

POST https://datastream.googleapis.com/v1/projects/[project-id]/locations/
[location]/connectionProfiles?connectionProfileId=[connection-profile-id]
{
  "displayName": "[connection-profile-display-name]",
  "mysqlProfile": {
    "hostname": "[host-ip-address]",
    "port": [port],
    "username": "[username]",
    "password": "[password]",
  },
  "staticServiceIpConnectivity": {}
}

次に例を示します。

POST https://datastream.googleapis.com/v1/projects/myProjectId/locations/
us-central1/connectionProfiles?connectionProfileId=mysql-cp
{
  "displayName": "my MySQL database",
  "mysqlProfile": {
    "hostname": "1.2.3.4",
    "port": 3306,
    "username": "root",
    "password": "12345"
  },
  "staticServiceIpConnectivity": {}
}

移行先の Cloud Storage バケットの接続プロファイルを作成する

次のコードは、Cloud Storage バケットの接続プロファイルの作成リクエストを示しています。Cloud Storage は Datastream と同じネットワーク内にあるため、特別な接続は必要ありません。したがって、接続方法は指定されていません。

REST

POST https://datastream.googleapis.com/v1/projects/[project-id/locations/
[location]/connectionProfiles?connectionProfileId=[connection-profile-id]
{
  "displayName": "connection-profile-display-name",
  "gcsProfile": {
    "bucketName": "bucket-name",
    "rootPath": "prefix-inside-bucket"
  }
}

次に例を示します。

POST https://datastream.googleapis.com/v1/projects/myProjectId/locations/
us-central1/connectionProfiles?connectionProfileId=myGcsCP
{
  "displayName": "my Cloud Storage bucket",
  "gcsProfile": {
    "bucketName": "myBucket",
    "rootPath": "prefix-inside-bucket"
  }
}

接続プロファイルに関する情報を取得する

次のコードは、作成された移行元 Oracle データベース、移行元 MySQL データベース、移行先 Cloud Storage バケットの接続プロファイルに関する情報を取得するリクエストを示しています。

REST

GET https://datastream.googleapis.com/v1/projects/project-id/locations/
[location]/connectionProfiles/[connection-profile-id]

次に例を示します。

GET https://datastream.googleapis.com/v1/projects/myProjectId/locations/
us-central1/connectionProfiles/myOracleCP

gcloud

gcloud を使用して接続プロファイルに関する情報を取得する方法については、こちらをご覧ください。

接続プロファイルの一覧表示

次のコードは、すべての接続プロファイルに関する情報を取得するリクエストを示しています。

REST

GET https://datastream.googleapis.com/v1/projects/[project-id]/locations/
[location]/connectionProfiles

gcloud

gcloud を使用してすべての接続プロファイルに関する情報を取得する方法については、こちらをご覧ください。

接続プロファイルを更新する

次のコードは、移行元データベースの既存の接続プロファイルのユーザー名とパスワードを変更するリクエストを示しています。

リクエストに updateMask パラメータを使用することで、指定するフィールドのみがリクエストの本文に含まれます(この例では、username および passwordフィールドがそれぞれ oracle_profile.username および oracle_profile.password フラグによって表されています)。

REST

PATCH https://datastream.googleapis.com/v1/projects/[project-id]/locations/
[location]/connectionProfiles/[connection-profile-id]?
updateMask=oracle_profile.username,oracle_profile.password
{
  "oracleProfile": {
    "username": "username",
    "password": "password"
  }
}

次に例を示します。

PATCH https://datastream.googleapis.com/v1/projects/myProjectId/locations/
us-central1/connectionProfiles/myOracleCP?
updateMask=oracle_profile.username,oracle_profile.password
{
  "oracleProfile": {
    "username": "username",
    "password": "password"
  }
}

次のコードは、接続プロファイルに割り当てられているプライベート接続構成を変更するリクエストを示しています。この接続プロファイルでは、VPC ピアリング ネットワークの接続方法を使用しています。

この例では、接続プロファイルに new_private_connection 構成を割り当てています。

PATCH -d {\"private_connectivity\":{\"private_connection_name\":\
"https://datastream.googleapis.com/v1/
projects/[project-id]/locations/[location]/privateConnections/
new_private_connection\"}}" -H "Authorization: Bearer $TOKEN" -H
"Content-Type: application/json" https://datastream.googleapis.com/v1/
projects/[project-id]/locations/[location]/connectionProfiles/
[connection-profile-id]?update_mask=private_connectivity.private_connection_name

次に例を示します。

PATCH -d {\"private_connectivity\":{\"private_connection_name\":\
"https://datastream.googleapis.com/v1/
projects/myProjectId/locations/us-central1/privateConnections/
new_private_connection\"}}" -H "Authorization: Bearer $TOKEN" -H
"Content-Type: application/json"
https://datastream.googleapis.com/v1/projects/
myProjectId/locations/us-central1/connectionProfiles/
myOracleVPCPeeringCP?update_mask=private_connectivity.private_connection_name

接続プロファイルの削除

次のコードは、接続プロファイルの削除リクエストを示しています。接続プロファイルを削除すると、そのプロファイルを使用するストリームは失敗します。

REST

DELETE https://datastream.googleapis.com/v1/projects/[project-id]/locations/
[location]/connectionProfiles/[connection-profile-id]

次に例を示します。

DELETE https://datastream.googleapis.com/v1/projects/myProjectId/locations/
us-central1/connectionProfiles/myOracleCP

gcloud

gcloud を使用して接続プロファイルを削除する方法の詳細については、こちらをご覧ください。

移行元または移行先の接続プロファイルの構造の確認

discoverConnectionProfile API を使用して、移行元または移行先の接続プロファイルからエンティティのリスト(スキーマとテーブルなど)とエンティティに関連付けられているメタデータを取得します。

API は、既存の接続プロファイルの ID または完全な接続プロファイル オブジェクト定義をパラメータとして受け取ることができます。この関数は、単一のレベル(データベース内のすべてのスキーマ、スキーマ内のすべてのテーブルなど)またはすべてのエンティティ(スキーマ、テーブル、列など)を再帰的に返すことができます。

REST

POST https://datastream.googleapis.com/v1/projects/[project-id]/locations/
[location]/connectionProfiles:discoverConnectionProfile?connection-profile-id

次に例を示します。

POST https://datastream.googleapis.com/v1/projects/myProjectId/locations/
us-central1/connectionProfiles:discoverConnectionProfile?myOracleCP