Dataplex Catalog を使用して Cloud SQL リソースを管理する

このページでは、Dataplex Catalog を使用して Cloud SQL リソースを検索して管理する方法について説明します。

Dataplex Catalog は、メタデータを保存、管理、アクセスするためのプラットフォームです。Cloud SQL インスタンスで Dataplex Catalog の統合を有効にすると、Dataplex Catalog は Cloud SQL インスタンス、データベース、テーブル、列、ビューから次のメタデータを自動的に取得します。

  • 名前
  • ロケーション(リージョン)
  • 作成日と最終更新日
  • スキーマ(テーブルとビュー用)
  • 説明

Dataplex Catalog は、Cloud SQL プライマリ インスタンスからのみメタデータを取得し、リードレプリカからは取得しません。

Dataplex Catalog を使用すると、Cloud SQL メタデータを検出して把握できます。Dataplex Catalog は、次の作業に役立ちます。

  • 分析(依存関係やユースケースへの適合性など)
  • チェンジ マネジメント
  • データの移動(パイプライン)
  • スキーマ進化

Dataplex Catalog では、Cloud SQL メタデータ エントリにアスペクトを適用してメタデータをキュレートします。各アスペクトには複数のメタデータ フィールドを含めることができ、事前定義済みのアスペクト タイプまたはカスタム アスペクト タイプに基づいて作成できます。

たとえば、個人を特定できる情報(PII)である社会保障番号を含む列に、次のアスペクトを適用できます。

  pii:true
  pii_type:SSN

Dataplex Catalog の詳細については、Dataplex Catalog の概要をご覧ください。

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. プロジェクトで Dataplex API を有効にします。

    Dataplex API を有効にする

  7. 権限を確認してください。

    エントリを検索して Cloud SQL アセットに適用するには、特定の Identity and Access Management(IAM)ロールと権限が必要です。詳細については、Dataplex Catalog に必要な IAM ロールと権限をご覧ください。

Dataplex Catalog に必要な IAM のロールと権限

Cloud SQL は、cloudsql.schemas.view 権限を使用して Dataplex のメタデータへのアクセスを提供します。

この権限を付与するには、この権限を含むカスタムロールを作成するか、この権限を持つ事前定義ロールのいずれかを使用します。

詳細については、Cloud SQL IAM 事前定義ロールをご覧ください。

Cloud SQL インスタンスで Dataplex Catalog の統合を有効にする

Cloud SQL インスタンスで Dataplex Catalog の統合を有効にするには、次のいずれかの方法を使用します。

gcloud

インスタンスを作成する

Cloud SQL インスタンスを作成するには、gcloud sql instances create コマンドを使用します。

gcloud sql instances create INSTANCE_NAME \
  --database-version=DATABASE_VERSION \
  --tier=MACHINE_TYPE \
  --region=REGION_NAME \
  --enable-dataplex-integration

次の項目を変更します。

  • INSTANCE_NAME: インスタンスの名前
  • DATABASE_VERSION: インスタンスのデータベース バージョン(例: POSTGRES_13)。使用可能な文字列の一覧については、SqlDatabaseVersion をご覧ください。
  • MACHINE_TYPE: インスタンスのマシンタイプ
  • REGION_NAME: インスタンスのリージョン名

インスタンスを更新する

既存のインスタンスで統合を有効にするには、gcloud sql instances patch コマンドを使用します。

gcloud sql instances patch INSTANCE_NAME \
  --enable-dataplex-integration

プロジェクト内のすべての Cloud SQL インスタンスを有効にして更新する必要がある場合は、次のようなスクリプトを実行します。

gcloud sql instances list --format="(NAME)" \
| tail -n +2 | xargs -t -I %
gcloud sql instances patch % --enable-dataplex-integration

この例は Linux ベースです。

REST v1

インスタンスを作成する

統合を有効にしてインスタンスを作成するには、次の例を使用します。この呼び出しで使用できるパラメータの完全なリストについては、instances.insert ページをご覧ください。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
  • INSTANCE_NAME: インスタンスの名前
  • REGION_NAME: インスタンスのリージョン名
  • DATABASE_VERSION: データベース バージョンの列挙型文字列(例: POSTGRES_13)。使用可能な文字列の一覧については、SqlDatabaseVersion をご覧ください。
  • PASSWORD: root ユーザーのパスワード
  • MACHINE_TYPE: マシン(階層)タイプの列挙型文字列(例: db-custom-[CPUS]-[MEMORY_MBS]
  • EDITION_TYPE: Cloud SQL のエディション

HTTP メソッドと URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

リクエストの本文(JSON):

{
  "name": "INSTANCE_NAME",
  "region": "REGION_NAME",
  "databaseVersion": "DATABASE_VERSION",
  "rootPassword": "PASSWORD",
  "settings": {
    "tier": "MACHINE_TYPE",
    "edition": "EDITION_TYPE",
    "enableDataplexIntegration": true
  }
}

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような JSON レスポンスが返されます。

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2024-09-25T22:19:33.735Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

インスタンスを更新する

既存のインスタンスを更新するには、この例を使用します。この呼び出しで使用できるパラメータの一覧については、instances.patch ページをご覧ください。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
  • INSTANCE_NAME: インスタンスの名前

HTTP メソッドと URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

リクエストの本文(JSON):

{
  "settings":
  {
    "enableDataplexIntegration": true
  }
}

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような JSON レスポンスが返されます。

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2024-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

インスタンスを作成する

統合を有効にしてインスタンスを作成するには、次の例を使用します。この呼び出しで使用できるパラメータの完全なリストについては、instances.insert ページをご覧ください。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
  • INSTANCE_NAME: インスタンスの名前
  • REGION_NAME: インスタンスのリージョン名
  • DATABASE_VERSION: データベース バージョンの列挙型文字列(例: POSTGRES_13)。使用可能な文字列の一覧については、SqlDatabaseVersion をご覧ください。
  • PASSWORD: root ユーザーのパスワード
  • MACHINE_TYPE: マシン(階層)タイプの列挙型文字列(例: db-custom-[CPUS]-[MEMORY_MBS]
  • EDITION_TYPE: Cloud SQL のエディション

HTTP メソッドと URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances

リクエストの本文(JSON):

{
  "name": "INSTANCE_NAME",
  "region": "REGION_NAME",
  "databaseVersion": "DATABASE_VERSION",
  "rootPassword": "PASSWORD",
  "settings": {
    "tier": "MACHINE_TYPE",
    "edition": "EDITION_TYPE",
    "enableDataplexIntegration": true
  }
}

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような JSON レスポンスが返されます。

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2024-09-25T22:19:33.735Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

インスタンスを更新する

既存のインスタンスを更新するには、この例を使用します。この呼び出しで使用できるパラメータの一覧については、instances.patch ページをご覧ください。

既存のインスタンスを更新するには、この例を使用します。この呼び出しで使用できるパラメータの一覧については、instances.patch ページをご覧ください。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
  • INSTANCE_NAME: インスタンスの名前

HTTP メソッドと URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

リクエストの本文(JSON):

{
  "settings":
  {
    "enableDataplexIntegration": true
  }
}

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような JSON レスポンスが返されます。

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2024-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Cloud SQL インスタンスで Dataplex Catalog の統合を確認する

インスタンスで Dataplex Catalog の統合が有効になっていることを確認するには、次のいずれかの方法を使用します。

gcloud

既存のインスタンスで Dataplex Catalog の統合が有効になっていることを確認するには、gcloud sql instances describe コマンドを使用します。

gcloud sql instances describe INSTANCE_NAME

INSTANCE_NAME は、インスタンス名で置き換えます。出力で、enableDataplexIntegrationtrue に設定されている構成設定を探します。

REST v1

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: プロジェクト ID
  • INSTANCE_ID<: インスタンス ID

HTTP メソッドと URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような JSON レスポンスが返されます。

{
"settings":
  {
  "enableDataplexIntegration": true
  }
}

REST v1beta4

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: プロジェクト ID
  • INSTANCE_ID<: インスタンス ID

HTTP メソッドと URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような JSON レスポンスが返されます。

{
"settings":
  {
  "enableDataplexIntegration": true
  }
}

Cloud SQL インスタンスで Dataplex Catalog の統合を無効にする

Cloud SQL インスタンスで Dataplex Catalog の統合を無効にするには、次のいずれかの方法を使用します。

gcloud

既存のインスタンスの統合を無効にするには、gcloud sql instances patch コマンドを使用します。

gcloud sql instances patch INSTANCE_NAME \
  --no-enable-dataplex-integration

統合を無効にしてプロジェクト内のすべての Cloud SQL インスタンスを更新する必要がある場合は、次のようなスクリプトを実行します。

gcloud sql instances list --format="(NAME)" \
| tail -n +2 | xargs -t -I %
gcloud sql instances patch % --no-enable-dataplex-integration

この例は Linux ベースです。

REST v1

この例を使用して、統合を無効にします。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
  • INSTANCE_NAME: インスタンスの名前

HTTP メソッドと URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

リクエストの本文(JSON):

{
  "settings":
  {
    "enableDataplexIntegration": false
  }
}

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような JSON レスポンスが返されます。

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2024-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

この例を使用して、統合を無効にします。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
  • INSTANCE_NAME: インスタンスの名前

HTTP メソッドと URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

リクエストの本文(JSON):

{
  "settings":
  {
    "enableDataplexIntegration": false
  }
}

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような JSON レスポンスが返されます。

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2024-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

アスペクトを使用して Cloud SQL アセットを拡張する

アスペクト タイプは、アスペクトのテンプレートとして使用できる再利用可能なリソースです。アスペクト タイプを使用すると、作業の重複や不完全なアスペクトを回避できます。Dataplex Catalog では、必要なアスペクト タイプを作成できます。

カスタム アスペクト タイプを作成したら、Cloud SQL アセットにアスペクトを適用できます。Cloud SQL アセットにアスペクトを適用すると、次のことが可能になります。

  • ビジネス メタデータをアセットに追加する。
  • ビジネス メタデータとその他のカスタム メタデータでアセットを検索する。

アスペクト タイプの作成と Cloud SQL へのアスペクトの適用の詳細については、アスペクトを管理してメタデータを拡張するをご覧ください。

Cloud SQL アセットを検索する

Google Cloud コンソールの Dataplex Catalog 検索ページを使用して、Cloud SQL アセットを検索します。

  1. Dataplex Catalog の検索ページに移動します。

    Dataplex に移動

  2. [検索プラットフォームの選択] で、[Dataplex Catalog] を選択します。

  3. [フィルタ] パネルで [システム] をクリックし、[Cloud SQL] を選択します。

  4. 省略可。[タイプ エイリアス] では、次のいずれかのタイプ エイリアスを選択して、検索結果を特定のタイプの Cloud SQL アセットにフィルタできます。

    • データベース
    • サービス
    • テーブル
    • ビュー

クエリを使用して検索を行う

Dataplex Catalog の検索フィールドを使用して検索クエリを実行することもできます。すべての Cloud SQL アセットを表示するには、system=Cloud_SQL と入力します。

次に、特定のキーワードを入力します。たとえば、すべての Cloud SQL データベースを表示するには:

system=Cloud_SQL AND type=Database

すべての Cloud SQL テーブルを表示するには、次のクエリを入力します。

system=Cloud_SQL AND type=Table

複雑な式では、かっこと、論理演算子(ANDOR)を使用することもできます。検索フィールドで使用できる式の詳細については、Dataplex Catalog の検索構文をご覧ください。

検索フィールドに、特定の Cloud SQL アセットの検索クエリを直接入力できます。クエリ文字列の形式は次のとおりです。

type="projects/PROJECT_ID/locations/global/entryTypes/QUERY_STRING"

次のように置き換えます。

  • PROJECT_ID: オブジェクトの ID
  • QUERY_STRING: 次の表を使用して、Cloud SQL エンジンとクエリするアセットのタイプに基づいてクエリ文字列を特定します。

    Cloud SQL エンジン クエリ文字列
    Cloud SQL for MySQL
    • cloudsql-mysql-database
    • cloudsql-mysql-instance
    • cloudsql-mysql-table
    • cloudsql-mysql-view
    Cloud SQL for PostgreSQL
    • cloudsql-postgresql-database
    • cloudsql-postgresql-instance
    • cloudsql-postgresql-table
    • cloudsql-postgresql-schema
    • cloudsql-postgresql-view
    Cloud SQL for SQL Server
    • cloudsql-sqlserver-database
    • cloudsql-sqlserver-instance
    • cloudsql-sqlserver-table
    • cloudsql-sqlserver-schema
    • cloudsql-sqlserver-view

クエリの例を次に示します。

type="projects/1234567890/locations/global/entryTypes/cloudsql-postgresql-instance"

Cloud SQL アセットを Cloud SQL 言語でフィルタする

デフォルトでは、Dataplex Catalog にはすべての Cloud SQL アセットが表示されます。Cloud SQL for MySQL、Cloud SQL for PostgreSQL、または SQL Server のアセットのみをフィルタするには、次の操作を行います。

  1. [アスペクト] パネルで、[アスペクト タイプを追加] メニューをクリックします。

  2. [SQL Access] を選択します。

  3. [OK] をクリックします。

  4. playlist_add (アスペクトの編集)ボタンをクリックします。[SQL Access] ページで、次の操作を行います。

    • [言語] フィールドで [MySQL] を選択し、Cloud SQL for MySQL アセットをフィルタします。
    • 省略可。[バージョン] フィールドを選択し、特定のバージョンの Cloud SQL for MySQL を入力します。
  5. [適用] をクリックします。Dataplex Catalog には、Cloud SQL for MySQL アセットのみが表示されます。

Dataplex Catalog には、検索に使用できる組み込みのアスペクト タイプがいくつかあります。

  1. [アスペクト] パネルで、[アスペクト タイプを追加] メニューをクリックします。

  2. 省略可。[SQL Access] を選択して、Cloud SQL の言語で結果をフィルタリングします。詳細については、前述の手順の Cloud SQL アセットを Cloud SQL 言語でフィルタするをご覧ください。

  3. 次のアスペクト タイプを 1 つ以上選択して、検索結果をそのタイプに絞り込みます。

    • Cloud SQL データベース
    • Cloud SQL インスタンス
    • Cloud SQL ビュー
    • Cloud SQL スキーマ
    • Cloud SQL テーブル
  4. [OK] をクリックします。

  5. 結果のテーブルでアセットの名前をクリックすると、そのアセットのメタデータが表示されます。

  6. 省略可: アセットを補正または表示します。ここでは、次の操作を行うことができます。

    • [概要] で [追加] をクリックして、アセットのリッチテキストによる説明を追加します。
    • [アスペクト] で [追加] をクリックして、アスペクトをアセットに適用します。
    • たとえば、インスタンスのメンバー データベースを表示するには、[エントリリスト] タブをクリックし、[検索結果の子エントリをすべて表示] をクリックします([エントリリスト] タブが表示されない場合、インスタンスにデータベースがありません)。
    • [エンティティの詳細] で、アセットの詳細を確認します。エントリ名をクリックして、他のエントリにドリルダウンします。

ワークフローの例 - インスタンスから列にドリルダウンする

このワークフローの例では、まず Cloud SQL インスタンスを検索して、次にメンバー データベースを表示し、そのデータベース内のテーブルを表示して最後にテーブル内の列を表示します。

  1. Dataplex Catalog の検索ページに移動します。

    Dataplex に移動

  2. [検索プラットフォームを選択] で、[Dataplex Catalog] を選択します。

  3. [フィルタ] パネルで、[システム]、[Cloud SQL] の順に選択します。または、検索フィールドに「system=Cloud_SQL」と入力します。

  4. インスタンス名を選択します。

  5. [Cloud SQL の詳細] ページで、[エントリリスト] タブをクリックし、[検索結果の子エントリをすべて表示] をクリックします。Dataplex Catalog がインスタンスのデータベースを表示します。

  6. Cloud SQL データベースの詳細ページで、[エントリリスト] タブをクリックし、[子エントリを検索で表示する] をクリックします。Dataplex Catalog にデータベース内のテーブルが表示されます。

  7. テーブル名を選択し、Cloud SQL テーブルの詳細ページで [スキーマ] をクリックしてテーブルの列を表示します。

  8. 省略可: 列にアスペクト タイプを追加するには、[アスペクトを追加] ボタンをクリックします。

このワークフローは、インスタンスからテーブルにドリルダウンする方法を示しています。検索フィールドに「system=Cloud_SQL AND type=Table」と入力すると、テーブルのリストに直接移動できます。

料金

Dataplex Catalog への Cloud SQL テクニカル メタデータの保存は無料です。API 呼び出しと追加のビジネス メタデータの拡張には、Dataplex の標準の料金が適用されます。詳細については、Dataplex の料金ページをご覧ください。

リソースの使用量

Dataplex Catalog は、インスタンスから定期的にデータを抽出します。抽出プロセスには、一定の CPU 使用率が必要です。マシンタイプが小さいインスタンス(共有コアと大規模なスキーマ(10,000 以上のテーブル)を持つマシンなど)は、抽出プロセス中に CPU の最大 40% を利用できます。

制限事項

このセクションでは、Cloud SQL と Dataplex Catalog の使用に関する制限事項について説明します。

  • Assured Workloads へのリソースの登録が原因でリソースへのアクセスが制限されているインスタンスでは、Dataplex Catalog と Cloud SQL の統合は無効になります。

  • 使用しているマシンサイズ、バージョン、Cloud SQL エンジンのタイプによっては、インスタンスで Dataplex Catalog を有効にしてから、Cloud SQL リソースが Dataplex Catalog にアセットとして表示されるまで 2~48 時間かかることがあります。

  • Cloud SQL for MySQL のデータベース、テーブル、ビューを削除してから、以前の名前でそのデータベース、テーブル、ビューを再作成すると、元のデータベース、テーブル、ビューに属する既存の Dataplex Catalog エントリはすべて Dataplex Catalog に残ります。Cloud SQL for PostgreSQL または SQL Server データベースに対して同じ削除と再作成のオペレーションを実行すると、エントリは Dataplex カタログから削除されます。これは想定どおりの動作です。
  • Cloud SQL for MySQL データベースで TRUNCATE オペレーションを実行すると、Dataplex Catalog のエントリがすべてデータベースから削除されます。

次のステップ