Cloud SQL for MySQL
MySQL コネクタを使用すると、MySQL データベース内の行を、挿入、読み取り、更新、削除できます。
サポート対象のバージョン
MySQL バージョン 5.0~8.0
準備
Cloud SQL for MySQL コネクタを使用する前に、次の作業を行います。
- Google Cloud プロジェクトで次の操作を行います。
- コネクタを構成するユーザーに roles/connectors.admin IAM ロールを付与します。
- コネクタに使用するサービス アカウントに、次の IAM ロールを付与します。
roles/secretmanager.viewer
roles/secretmanager.secretAccessor
roles/cloudsql.editor
サービス アカウントは特別なタイプの Google アカウントで、Google API のデータにアクセスするのに認証を受ける必要がある人間以外のユーザーを表します。サービス アカウントがない場合は、サービス アカウントを作成する必要があります。詳細については、サービス アカウントを作成するをご覧ください。
- 次のサービスを有効にします。
secretmanager.googleapis.com
(Secret Manager API)connectors.googleapis.com
(Connectors API)
サービスを有効にする方法については、サービスを有効にするをご覧ください。
以前にプロジェクトでこうしたサービスを有効にしていない場合は、コネクタを構成するときにそれを有効にすることを求められます。
sqladmin.googleapis.com
(Cloud SQL Admin API) を有効にします。
コネクタを構成する
コネクタを構成するには、データソース(バックエンド システム)への接続を作成する必要があります。接続はデータソースに特有です。つまり、多数のデータソースがある場合は、データソースごとに別々の接続を作成する必要があります。接続を作成する手順は次のとおりです。
- Cloud コンソールで、[Integration Connectors] > [接続] ページに移動し、Google Cloud プロジェクトを選択または作成します。
- [+ 新規作成] をクリックして [接続の作成] ページを開きます。
- [ロケーション] セクションで、接続のロケーションを選択します。
- リージョン: プルダウン リストからロケーションを選択します
サポートされているすべてのリージョンの一覧については、ロケーションをご覧ください。
- [NEXT] をクリックします。
- リージョン: プルダウン リストからロケーションを選択します
- [接続の詳細] セクションで、次の操作を行います。
- Connector: 使用可能なコネクタのプルダウン リストから [Cloud SQL for MySQL] を選択します。
- コネクタのバージョン: 使用可能なバージョンのプルダウン リストからコネクタのバージョンを選択します。
- [接続名] フィールドに、接続インスタンスの名前を入力します。
接続名は次の条件を満たす必要があります。
- 接続名には英字、数字、ハイフンを使用できます。
- 文字は小文字のみを使用できます。
- 接続名の先頭には英字を設定し、末尾には英字または数字を設定する必要があります。
- 接続名は 49 文字以内で指定してください。
- 必要に応じて、接続インスタンスの [説明] を入力します。
- 必要に応じて、Cloud Logging を有効にして、ログレベルを選択します。デフォルトのログレベルは
Error
に設定されています。 - サービス アカウント: 必要なロールを持つサービス アカウントを選択します。
- 必要に応じて、接続ノードの設定を構成します。
- ノードの最小数: 接続ノードの最小数を入力します。
- ノードの最大数: 接続ノードの最大数を入力します。
ノードは、トランザクションを処理する接続の単位(またはレプリカ)です。1 つの接続でより多くのトランザクションを処理するには、より多くのノードが必要になります。逆に、より少ないトランザクションを処理するには、より少ないノードが必要になります。ノードがコネクタの料金に与える影響については、接続ノードの料金をご覧ください。値を入力しない場合は、デフォルトで最小ノード数は 2 に設定され(可用性を高めるため)、最大ノード数は 50 に設定されます。
- プロジェクト ID: CloudSQL インスタンスが存在する Google Cloud プロジェクトの ID。
- データベース リージョン: CloudSQL インスタンスが存在するリージョンの名前。
- インスタンス ID: 接続先の CloudSQL インスタンスの ID。
- データベース名: 接続先の MySQL データベースの名前。
- 必要に応じて、[+ ラベルを追加] をクリックして Key-Value ペアの形式でラベルを接続に追加します。
- [NEXT] をクリックします。
- [宛先] セクションに、接続するリモートホスト(バックエンド システム)の詳細を入力します。
- 宛先の種類: 宛先の種類を選択します。
- リストから [ホストアドレス] を選択して、宛先のホスト名または IP アドレスを指定します。
- バックエンド システムへのプライベート接続を確立する場合は、リストからエンドポイント アタッチメントを選択し、次にエンドポイント アタッチメントリストから必要なエンドポイント アタッチメントを選択します。
セキュリティをさらに強化してバックエンドシステムへのパブリック接続を確立する場合は、接続用の静的アウトバウンド IP アドレスの構成を検討してから、特定の静的 IP アドレスのみを許可リストに登録するようファイアウォール ルールを構成します。
他の宛先を入力するには、[+ 宛先を追加] をクリックします。
- [NEXT] をクリックします。
- 宛先の種類: 宛先の種類を選択します。
-
[認証] セクションで、認証の詳細を入力します。
- [認証タイプ] を選択し、関連する詳細を入力します。
Cloud SQL for MySQL 接続でサポートされる認証タイプは次のとおりです。
- ユーザー名とパスワードを指定する
- [NEXT] をクリックします。
これらの認証タイプを構成する方法については、認証を構成するをご覧ください。
- [認証タイプ] を選択し、関連する詳細を入力します。
- Review: 接続と認証の詳細を確認します。
- [作成] をクリックします。
認証を構成する
使用する認証に基づいて詳細を入力します。
- ユーザー名とパスワード
- ユーザー名: 接続に使用する Mysql ユーザー名。
- パスワード: Mysql ユーザー名に関連付けられたパスワードを含む Secret Manager の Secret。
エンティティ、オペレーション、アクション
すべての Integration Connectors が、接続されたアプリケーションのオブジェクトを抽象化するレイヤを提供します。アプリケーションのオブジェクトには、この抽象化を通じてのみアクセスできます。抽象化は、エンティティ、オペレーション、アクションとして公開されます。
- エンティティ: エンティティは、接続されているアプリケーションやサービスのオブジェクト、またはプロパティのコレクションと考えることができます。エンティティの定義は、コネクタによって異なります。たとえば、データベース コネクタでは、テーブルがエンティティであり、ファイル サーバー コネクタでは、フォルダがエンティティです。また、メッセージング システム コネクタでは、キューがエンティティです。
ただし、コネクタでいずれのエンティティもサポートされていない、またはエンティティが存在しない可能性があります。その場合、
Entities
リストは空になります。 - オペレーション: エンティティに対して行うことができるアクティビティです。エンティティに対して次のいずれかのオペレーションを行うことができます。
使用可能なリストからエンティティを選択すると、そのエンティティで使用可能なオペレーションのリストが生成されます。オペレーションの詳細については、コネクタタスクのエンティティ オペレーションをご覧ください。ただし、コネクタがいずれかのエンティティ オペレーションをサポートしていない場合、サポートされていないオペレーションは
Operations
リストに含まれません。 - アクション: コネクタ インターフェースを介して統合で使用できる主要な関数の一つです。アクションを使用すると、1 つまたは複数のエンティティに対して変更を加えることができます。また、使用できるアクションはコネクタごとに異なります。通常、アクションには入力パラメータと出力パラメータがあります。ただし、コネクタがどのアクションもサポートしていない可能性があります。その場合は、
Actions
リストが空になります。
システムの上限
Cloud SQL for MySQL コネクタは、ノードごとに 1 秒あたり最大 10 件のトランザクションを処理することができ、この上限を超えるトランザクションはすべてスロットルされます。 デフォルトでは、Integration Connectors は、接続に 2 つのノードを割り当てます(可用性を高めるため)。
Integration Connectors に適用される上限の詳細については、上限をご覧ください。
サポートされているデータ型
このコネクタでサポートされているデータ型は次のとおりです。
- BIGINT
- BINARY
- BIT
- BOOLEAN
- CHAR
- DATE
- DECIMAL
- DOUBLE
- FLOAT
- INTEGER
- LONGN VARCHAR
- LONG VARCHAR
- NCHAR
- NUMERIC
- NVARCHAR
- REAL
- SMALL INT
- TIME
- TIMESTAMP
- TINY INT
- VARBINARY
- VARCHAR
操作
このコネクタは、次のアクションの実行をサポートしています。
- ユーザー定義のストアド プロシージャと関数。バックエンドにストアド プロシージャと関数がある場合、それらは
Configure connector task
ダイアログのActions
列に表示されます。 - カスタム SQL クエリ。カスタム SQL クエリを実行するため、コネクタは [カスタムクエリを実行する] アクションを備えています。
カスタムクエリを作成する手順は次のとおりです。
- 詳細な手順に沿って、コネクタタスクを追加します。
- コネクタタスクを構成するときに、実行するアクションの種類で [Actions] を選択します。
- [Actions] リストで [Execute custom query] を選択し、[Done] をクリックします。
- [Task input] セクションを開き、次の操作を行います。
- [タイムアウト後] フィールドに、クエリが実行されるまで待機する秒数を入力します。
デフォルト値:
180
秒 - [最大行数]フィールドに、データベースから返される最大行数を入力します。
デフォルト値:
25
。 - カスタムクエリを更新するには、[Edit Custom Script] をクリックします。[Script editor] ダイアログが開きます。
- [Script editor] ダイアログで、SQL クエリを入力して [Save] をクリックします。
SQL ステートメントで疑問符(?)を使用して、クエリ パラメータ リストで指定する必要がある 1 つのパラメータを表すことができます。たとえば、次の SQL クエリは、
LastName
列に指定された値と一致するEmployees
テーブルからすべての行を選択します。SELECT * FROM Employees where LastName=?
- SQL クエリで疑問符を使用した場合は、各疑問符の [+ パラメータ名を追加] をクリックして、パラメータを追加する必要があります。統合の実行中に、これらのパラメータにより SQL クエリ内の疑問符(?)が順番に置き換わります。たとえば、3 つの疑問符(?)を追加した場合、3 つのパラメータを順番に追加する必要があります。
クエリ パラメータを追加する手順は次のとおりです。
- [Type] リストから、パラメータのデータ型を選択します。
- [値] フィールドに、パラメータの値を入力します。
- 複数のパラメータを追加するには、[+ クエリ パラメータを追加] をクリックします。
- [タイムアウト後] フィールドに、クエリが実行されるまで待機する秒数を入力します。
アクションの例
例 - 大きい方の値を求める
この例では、ユーザー定義関数の実行方法を示します。この例の find_greater
関数は、2 つの整数を比較し、大きい方の整数を返します。
- [
Configure connector task
] ダイアログで、[Actions
] をクリックします。 - [
find_greater
] アクションを選択してから、[完了] をクリックします。 - [コネクタ] タスクの [タスク入力] セクションで、
connectorInputPayload
をクリックし、Default Value
フィールドに次のような値を入力します。{ "$1": 1.0, "$2": 5.0 }
アクションの実行に成功すると、コネクタタスクの connectorOutputPayload
フィールドの値は次のようになります。
[{ "bignum": 5.0 }]
エンティティ オペレーションの例
例 - エンティティのレコードを一覧表示する
この例では、Users
エンティティのレコードを一覧表示します。
- [
Configure connector task
] ダイアログで、[Entities
] をクリックします。 Entity
からUsers
を選択します。- [
List
] オペレーションを選択してから、[完了] をクリックします。 - [コネクタ] タスクの [タスク入力] セクションで、要件に応じて filterClause を設定できます。
たとえば、フィルタ句を
employeeCode='5100' and startDate='2010-01-01 00:00:00'
に設定すると、employeeCode が 5100 であり、startDate が 2010-01-01 00:00:00 であるレコードのみが一覧表示されます。
例 - エンティティから 1 つのレコードを取得する
この例では、Users
エンティティからレコードを取得します。
- [
Configure connector task
] ダイアログで、[Entities
] をクリックします。 Entity
からUser
を選択します。- [
Get
] オペレーションを選択してから、[完了] をクリックします。 - [コネクタタスクの [タスク入力 セクションで [entityId] をクリックし、[デフォルト値] フィールドに
103032
を入力します。ここで、
103032
はUsers
エンティティの主キーの値です。
例 - エンティティからレコードを削除する
この例では、Users
エンティティからレコードを削除します。
- [
Configure connector task
] ダイアログで、[Entities
] をクリックします。 Entity
からUsers
を選択します。- [
Delete
] オペレーションを選択してから、[完了] をクリックします。 - [コネクタタスクの [タスク入力] セクションの [entityId] をクリックし、[デフォルト値] フィールドに
113132
を入力します。または、エンティティに複合主キーがある場合、entityId を指定する代わりに、filterClause を設定できます。たとえば、
employeeCode='5100' and startDate='2010-01-01 00:00:00'
です。
例 - エンティティにレコードを作成する
この例では、Users
エンティティに レコードを作成します。
- [
Configure connector task
] ダイアログで、[Entities
] をクリックします。 Entity
からUsers
を選択します。- [
Create
] オペレーションを選択してから、[完了] をクリックします。 - [コネクタ] タスクの [タスク入力] セクションで、
connectorInputPayload
をクリックし、Default Value
フィールドに次のような値を入力します。{ "employeeCode": "5100", "startDate": "2010-01-01 00:00:00.0", "country": "US" }
統合が成功すると、コネクタタスクの connectorOutputPayload
フィールドに create オペレーションのレスポンスが返されます。
例 - エンティティ内のレコードを更新する
この例では、Users
エンティティに レコードを作成します。
- [
Configure connector task
] ダイアログで、[Entities
] をクリックします。 Entity
からUsers
を選択します。- [
Update
] オペレーションを選択してから、[完了] をクリックします。 - [コネクタ] タスクの [タスク入力] セクションで、
connectorInputPayload
をクリックし、Default Value
フィールドに次のような値を入力します。{ "country": "IN" }
- [コネクタタスクの [タスク入力] セクションの [entityId] をクリックし、[デフォルト値] フィールドに
113132
を入力します。または、エンティティに複合主キーがある場合、entityId を指定する代わりに、filterClause を設定できます。たとえば、
employeeCode='5100' and startDate='2010-01-01 00:00:00'
です。
統合が成功すると、コネクタタスクの connectorOutputPayload
フィールドに update オペレーションのレスポンスが返されます。
Terraform を使用して接続を作成する
Terraform リソースを使用して、新しい接続を作成できます。Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
接続作成用の Terraform テンプレートのサンプルを表示するには、サンプル テンプレートをご覧ください。
Terraform を使用してこの接続を作成する場合は、Terraform 構成ファイルで次の変数を設定する必要があります。
パラメータ名 | データ型 | 必須 | 説明 |
---|---|---|---|
project_id | STRING | True | Cloud SQL インスタンスを含むプロジェクトのプロジェクト ID。 例: myproject |
database_region | STRING | True | インスタンスのクラウド リージョン(us-central1 など)。 |
instance_id | STRING | True | データベース インスタンス ID。プロジェクト ID は含みません。例: myinstance |
database_name | STRING | True | インスタンス内のデータベースの名前(mydatabase など)。 |
インテグレーションで Cloud SQL for MySQL 接続を使用する
接続を作成すると、Apigee Integration と Application Integration の両方で使用できるようになります。この接続は、コネクタタスクを介して統合で使用できます。
- Apigee Integration で Connectors タスクを作成して使用する方法については、Connectors タスクをご覧ください。
- Application Integration で Connectors タスクを作成して使用する方法については、Connectors タスクをご覧ください。
また、MySQL 接続を作成し、連携内でこの接続を使用して読み取り / 書き込みオペレーションを行う方法を説明している MySQL データベースで CRUD オペレーションを実行するのチュートリアルもご覧ください。
Google Cloud コミュニティの助けを借りる
Google Cloud コミュニティの Cloud フォーラムで質問を投稿したり、このコネクタについてディスカッションしたりできます。次のステップ
- 接続を一時停止して再開する方法を確認する。
- コネクタの使用状況をモニタリングする方法を確認する。
- コネクタログを表示する方法を確認する。