Cloud Data FusionでAWSのMySQLからBigQueryにつなげてみた

Yuki Nagae
google-cloud-jp
Published in
6 min readApr 30, 2019

※本記事の内容は実用レベルの構成・実装ではなく、あくまでも「AWS上のMySQLとBigQueryつながったぞー」というだけですのでご注意ください。

ちなみに、このPostgreSQLの記事のMySQL版です。重複している手順もありますが、微妙に手順が異なったりしてハマりがちなので今回は記事にしました(例えば、MySQLの場合にはテンプレートがありますが、PostgreSQLの場合には現在テンプレートがありません)

また、MySQL to BigQueryのテンプレートは元々うまく動作しなかったのですが、こちらのstackoverflowで質問したら即座に修正・回答してくれたので今回の記事を書くことができました。Thanks, Ali!

よくある問題

  • WebアプリのデータはMySQLにある
  • アプリのデータをBigQueryにバックアップしたい

Cloud Data Fusion を使えばいけるのでは?(´∀`*)

今回やること

  • AWS上にあるMySQLからGCPのBigQueryに、Cloud Data Fusionを使ってデータを持ってくる

事前に必要なこと

こちらの手順を参照し、以下を準備してください。

  • プロジェクトの用意(既存のプロジェクトを利用することもできますが、試した後に削除しやすいので新規にプロジェクト作成をオススメします)
  • プロジェクトのbillingが有効であること
  • Cloud Data Fusion APIが有効であること
  • AWSの Amazon RDS でMySQLのDBがセットアップ済みであること(※外部から接続可能な設定であること)
  • Cloud Data Fusionのインスタンスが作成済みであること(※10〜20分程度かかります)
  • パーミッションが設定済みであること

MySQLのJDBCドライバーをセットアップ

Cloud Data FusionのGUI画面から、「HUB」をクリックし、MySQL JDBC Driver を選択します。 (5.0.8と5.1.39の二つのバージョンありますが、今回は5.1.39の方をセットアップします)

書いてあるとおりの手順で進めます。PostgreSQL版の記事とほぼ同じなので説明を省略します。

  1. Download MySQL JDBC Driver: Download
  2. MySQL Driver Plugin: Deploy

MySQL to BigQueryのパイプラインを作成する

Cloud Data FusionのGUI画面から、「HUB」をクリックし、Transfer Data From MySQL to Google BigQuery を選択します。

いくつかのプラグインおよびドライバーをインストールする必要があるようです。しかし、ほとんどの手順はすでに不要なので、最後の4手順のみを実施し、パイプラインを作成します。

1. Install Google Cloud Plugins: 不要
2. Download MySQL JDBC Driver: 一つ前の手順で設定済みなので不要
3. Install MySQL Driver Plugin: 一つ前の手順で設定済みなので不要
4. Transfer Data From MySQL to Google BigQuery: これだけクリックする

好きなパイプライン名を入力 して「Finish」をクリックします。

パイプラインを設定する

Database(MySQL)とBigQueryの各ノードの設定をします。

Databaseノードの設定

Connection String

jdbc:mysql://[MYSQLの対象ホストのエンドポイント(※外部から接続可能)]:3306/[MySQLのデータベース名]

Import Query

SELECT * FROM [MySQLの対象テーブル名] WHERE $CONDITIONS;

Credentials

  • Username: AWSのMySQLで設定した値
  • Password: AWSのMySQLで設定した値

Output Schema

  • MySQLの対象テーブルのカラム情報

BigQueryノードの設定

※途中出てくる auto-detect という値を使うと自動で値を検知してセットしてくれるので便利です。

Reference Name

  • 任意

Project ID

auto-detect

Dataset

  • [BigQueryの対象データセット名]

Table

  • [BigQueryの対象テーブル名]

Temporary Bucket Name

  • 空白のままで問題ない(※自動的に作成されます)

Service Account File Path

auto-detect

Schema

  • BigQueryの対象テーブルのカラム情報

パイプラインのデプロイ

最後に右上のバーから「Deploy」をクリックします。

デプロイ中です。

パイプラインの実行

デプロイが完了すると以下のようなGUIに画面遷移します。

中央上部の「Run」をクリックして、パイプラインを実行してみましょう。

少し時間がかかりますが、最後にStatusが Succeeded になれば成功です!

BigQueryの対象テーブルにデータが入っているはずです(´∀`*)

参考資料

--

--