をご覧ください。
概要
このセクションでは、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