MySQL の転送をスケジュールする
BigQuery Data Transfer Service MySQL コネクタを使用すると、MySQL インスタンスから BigQuery にデータを取り込むことができます。オンプレミス環境、Cloud SQL、Amazon Web Services(AWS)や Microsoft Azure などの他のパブリック クラウド プロバイダでホストされている MySQL インスタンスをサポートしています。BigQuery Data Transfer Service MySQL コネクタを使用すると、MySQL データベースから BigQuery にデータを転送するためのオンデマンド データ転送ジョブと定期的なデータ転送ジョブを作成することもできます。
始める前に
- MySQL データベースにユーザーを作成する。
- BigQuery Data Transfer Service を有効にするために必要なすべての操作が完了していることを確認します。
- データを保存する BigQuery データセットを作成します。
- このドキュメントのタスクを完了するために必要なロールがあることを確認します。
必要なロール
Pub/Sub の転送実行通知を設定する場合は、pubsub.topics.setIamPolicy
Identity and Access Management(IAM)権限があることを確認します。メール通知を設定するだけの場合、Pub/Sub の権限は必要ありません。詳細については、BigQuery Data Transfer Service の実行通知をご覧ください。
MySQL データ転送の作成に必要な権限を取得するには、プロジェクトに対する BigQuery 管理者 (roles/bigquery.admin
)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
この事前定義ロールには、MySQL データ転送の作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
MySQL データ転送を作成するには、次の権限が必要です。
-
bigquery.transfers.update
-
bigquery.datasets.get
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
ネットワーク接続
MySQL データベース接続でパブリック IP アドレスを使用できない場合は、ネットワーク アタッチメントを設定する必要があります。
必要なネットワーク設定の詳細な手順については、次のドキュメントをご覧ください。
- Cloud SQL から転送する場合は、Cloud SQL インスタンスへのアクセスを構成するをご覧ください。
- AWS から転送する場合は、AWS-Google Cloud VPN とネットワーク アタッチメントを設定するをご覧ください。
- Azure から転送する場合は、Azure とGoogle Cloud の VPN とネットワーク アタッチメントを設定するをご覧ください。
制限事項
MySQL データ転送には次の制限があります。
- MySQL データベースへの同時接続の最大数は、MySQL 構成パラメータ
max_connections
によって決まります。デフォルトでは 151 接続に設定されていますが、必要に応じて上限を高く設定できます。その結果、1 つの MySQL データベースへの同時転送実行数はその最大数に制限されます。この制限により、同時転送ジョブの数は、MySQL データベースでサポートされている同時接続の最大数より小さい値に制限する必要があります。 - MySQL では、データ損失を回避するために、一部のデータ型が BigQuery の文字列型にマッピングされます。たとえば、MySQL で定義され、精度と尺度が定義されていない数値型は、BigQuery の文字列型にマッピングされます。
MySQL のデータ転送を設定する
次のオプションのいずれかを選択します。
コンソール
[データ転送] ページに移動します。
[転送を作成] をクリックします。
[ソースタイプ] セクションの [ソース] で、[MySQL] を選択します。
[転送構成名] セクションの [表示名] に、転送名を入力します。転送名には、後で修正が必要になった場合に識別できる任意の名前を使用できます。
[スケジュール オプション] セクションで、次の操作を行います。
- 繰り返しの頻度を選択します。[時間]、[日](デフォルト)、[週]、[月] のいずれかを選択する場合は、頻度も指定する必要があります。[カスタム] オプションを選択して、より具体的な繰り返し頻度を作成することもできます。[オンデマンド] オプションを選択した場合、このデータ転送は手動で転送をトリガーした場合にのみ実行されます。
- 必要に応じて、[すぐに開始可能] または [設定した時刻に開始] オプションを選択し、開始日と実行時間を指定します。
[転送先の設定] セクションの [データセット] で、データを保存するために作成したデータセットを選択するか、[新しいデータセットの作成] をクリックして、転送先データセットとして使用するデータセットを作成します。
[データソースの詳細] セクションで、次のようにします。
- [ネットワーク アタッチメント] で、既存のネットワーク アタッチメントを選択するか、[ネットワーク アタッチメントの作成] をクリックします。詳細については、このドキュメントのネットワーク接続のセクションをご覧ください。
- [Host] に、MySQL データベース サーバーのホスト名または IP アドレスを入力します。
- [ポート番号] に、MySQL データベース サーバーのポート番号を入力します。
- [データベース名] に、MySQL データベースの名前を入力します。
- [ユーザー名] に、MySQL データベース接続を開始する MySQL ユーザーのユーザー名を入力します。
- [パスワード] に、MySQL データベース接続を開始する MySQL ユーザーのパスワードを入力します。
- [暗号化モード] で、MySQL データベースに接続するときに完全な SSL 検証を有効にするにはメニューから [完全] を選択し、SSL 検証を行わない場合は [無効] を選択します。
転送する MySQL オブジェクトの場合は、次のいずれかを行います。
- [参照] をクリックして、転送に必要な MySQL テーブルを選択し、[選択] をクリックします。
- 転送する MySQL オブジェクトのテーブル名を手動で入力します。
省略可: [サービス アカウント] メニューで、転送を承認するカスタム サービス アカウントを指定します。使用しているサービス アカウントに必要なロールと権限がすべて付与されていることを確認します。詳細については、サービス アカウントとしてオーナーを転送するをご覧ください。
省略可: [通知オプション] セクションで、次のようにします。
[保存] をクリックします。
bq
bq mk
コマンドを入力して、転送作成フラグ --transfer_config
を指定します。
bq mk \ --transfer_config \ --project_id=PROJECT_ID \ --data_source=DATA_SOURCE \ --display_name=DISPLAY_NAME \ --target_dataset=DATASET \ --params='PARAMETERS'
次のように置き換えます。
- PROJECT_ID(省略可): Google Cloud プロジェクト ID。
--project_id
フラグで特定のプロジェクトを指定しない場合は、デフォルトのプロジェクトが使用されます。 - DATA_SOURCE: データソース(
mysql
)。 - DISPLAY_NAME: データ転送構成の表示名。転送名には、後で修正が必要になった場合に識別できる任意の名前を使用できます。
- DATASET: データ転送構成のターゲット データセット。
PARAMETERS: 作成された転送構成のパラメータを JSON 形式で指定します。例:
--params='{"param":"param_value"}'
。MySQL 転送のパラメータは次のとおりです。networkAttachment
(省略可): MySQL データベースに接続するネットワーク アタッチメントの名前。connector.database
: MySQL データベースの名前。connector.endpoint.host
: データベースのホスト名または IP アドレス。connector.endpoint.port
: データベースのポート番号。connector.authentication.username
: データベース ユーザーのユーザー名。connector.authentication.password
: データベース ユーザーのパスワード。 connector.connectionTypeconnector.connectionType
(省略可): 接続 URL を決定する接続タイプ。値はSERVICE
、SID
、またはTNS
です。指定しない場合、デフォルトはSERVICE
です。connector.encryptionMode
: 暗号モード。これは、MySQL データベースに接続する際の完全な SSL 検証の場合はFULL
、SSL 検証なしの場合はDISABLE
です。assets
: 転送の一部として MySQL データベースから転送される MySQL テーブルの名前のリスト。
たとえば、次のコマンドは My Transfer
という MySQL 転送を作成します。
bq mk \ --transfer_config \ --target_dataset=mydataset \ --data_source=mysql \ --display_name='My Transfer' \ --params='{"assets":["DB1/DEPARTMENT","DB1/EMPLOYEES"], \ "connector.authentication.username": "User1", \ "connector.authentication.password":"ABC12345", \ "connector.encryptionMode":"FULL", \ "connector.database":"DB1", \ "connector.endpoint.host":"54.74.220.23", \ "connector.endpoint.port":"3306"}'
API
projects.locations.transferConfigs.create
メソッドを使用して、TransferConfig
リソースのインスタンスを指定します。
データ型マッピング
次の表に、MySQL データ型と対応する BigQuery データ型のマッピングを示します。
MySQL のデータ型 | BigQuery のデータ型 |
---|---|
BIT |
BOOLEAN |
TINYINT |
INTEGER |
BOOL 、BOOLEAN |
BOOLEAN |
SMALLINT |
INTEGER |
MEDIUMINT |
INTEGER |
INT 、INTEGER |
INTEGER |
BIGINT |
BIGNUMERIC |
FLOAT |
FLOAT |
DOUBLE |
FLOAT |
DECIMAL |
BIGNUMERIC |
DATE |
DATE |
DATETIME |
TIMESTAMP |
TIMESTAMP |
TIMESTAMP |
TIME |
TIME |
YEAR |
DATE |
CHAR |
STRING |
VARCHAR |
STRING |
BINARY |
BYTES |
VARBINARY |
BYTES |
TINYBLOB |
BYTES |
TINYTEXT |
STRING |
BLOB |
BYTES |
TEXT |
STRING |
MEDIUMBLOB |
BYTES |
MEDIUMTEXT |
STRING |
LONGBLOB |
BYTES |
LONGTEXT |
STRING |
ENUM |
STRING |
SET |
STRING |
トラブルシューティング
データ転送の設定に問題がある場合は、MySQL の転送に関する問題をご覧ください。
次のステップ
- BigQuery Data Transfer Service の概要については、BigQuery Data Transfer Service とはをご覧ください。
- 転送構成に関する情報の取得、転送構成の一覧表示、転送の実行履歴の表示など、転送の使用方法については、転送の管理をご覧ください。
- クロスクラウドの操作でデータを読み込む方法を学習する。