MySQL から BigQuery へのデータの複製


このチュートリアルでは、変更されたデータを MySQL データベースから BigQuery テーブルに継続的に複製するジョブを作成してデプロイする方法を説明します。

目標

このチュートリアルの内容は次のとおりです。

  1. MySQL データベースを Compute Engine にデプロイします。
  2. MySQL データベースをセットアップして、複製を有効にします。
  3. Cloud Data Fusion Replication ジョブを作成して実行します。
  4. BigQuery で結果を表示します。

費用

このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。 新しい Google Cloud ユーザーは無料トライアルをご利用いただける場合があります。

複製が実行されると、Dataproc クラスタに対して課金され、BigQuery の処理料金が発生します。これらの費用を最適化するには、BigQuery 定額料金を適用することを強くおすすめします。

準備

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Cloud Data Fusion, BigQuery, and Cloud Storage API を有効にします。

    API を有効にする

  5. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  6. Google Cloud プロジェクトで課金が有効になっていることを確認します

  7. Cloud Data Fusion, BigQuery, and Cloud Storage API を有効にします。

    API を有効にする

  8. バージョン 6.3.0 以降でパブリック Cloud Data Fusion インスタンスを作成します。プライベート インスタンスを作成する場合は、VPC ネットワーク ピアリングを設定します。
    • インスタンスを作成するときに、[アクセラレータを追加] をクリックし、[レプリケーション] チェックボックスをオンにして、レプリケーションを有効にします。
    • 既存のインスタンスで有効にするには、レプリケーションを有効にするをご覧ください。

必要なロール

このチュートリアルで必要な権限を取得するには、IAM によるアクセス制御サービス アカウントにユーザー権限を付与するをご覧ください。

Compute Engine に MySQL をインストールする

  1. MySQL Server Docker イメージをダウンロードします。

  2. Docker イメージを Artifact Registry にアップロードします。

  3. 新しい VM インスタンスに Docker イメージをデプロイします。

  4. Compute Engine の [ディスク] ページで、ディスクサイズを 500 GB に変更して、VM を再起動します。

    [ディスク] に移動

  5. VM インスタンスのファイアウォールを作成します。

  6. Sakila サンプル データベースをインストールします。

MySQL データベースのレプリケーションを有効にする

レプリケーションを有効にするには、MySQL で変更データ キャプチャ(CDC)をセットアップします

Cloud Data Fusion Replication ジョブを作成して実行する

JDBC ドライバをアップロードする

  1. MySQL JDBC ドライバ(バージョン 8 以降)をローカルマシンにダウンロードします。

  2. Cloud Data Fusion ウェブ インターフェースで、JDBC ドライバをアップロードします。

    次の値を使用して、JDBC ドライバを構成します。

    • [名前] フィールドに「mysql」と入力します。
    • [バージョン] フィールドはデフォルトのままにしておきます。
    • [Class Name] フィールドに「com.mysql.jdbc.Driver」と入力します。

ジョブを作成します

  1. Cloud Data Fusion ウェブ インターフェースで、[レプリケーション] をクリックします。

  2. [レプリケーション ジョブを作成する] をクリックします。

  3. [新しいレプリケーション ジョブの作成] ページで、レプリケーション ジョブの [名前] を指定し、[次へ] をクリックします。

  4. ソースを構成します。

    1. ソースとして [MySQL] を選択します。
    2. [Host] に、読み取り元の MySQL のホスト名を入力します。
    3. [Port] に、MySQL サーバーへの接続に使用するポート「3306」を入力します。
    4. [JDBC Plugin Name] に mysql または JDBC ドライバを構成したときに指定した名前を選択します。
    5. [Database Name] に「sakila」と入力します。
    6. [Credentials] セクションで、MySQL サーバーにアクセスするためのユーザー名とパスワードを入力します。
  5. [Next] をクリックします。

  6. ターゲットを構成します。

    1. BigQuery ターゲットを選択します。
    2. プロジェクト IDサービス アカウント キーが自動的に検出されます。デフォルト値をそのまま使用します。
    3. 省略可: [Advanced] セクションで、ステージング バケットの名前、ロケーション、負荷間隔、ステージング テーブルのプレフィックス、テーブルまたはデータベースの削除時の動作を構成します。
  7. [Next] をクリックします。

  8. 接続に成功すると、Sakila サンプル データベース テーブルのリストが表示されます。このチュートリアルでは、複製するテーブルとイベント(挿入、更新、削除のイベントなど)を選択します。

  9. 省略可: 詳細プロパティを構成します。このチュートリアルでは、デフォルト設定を使用できます。

  10. [Next] をクリックします。

  11. [Review assessment] ページでいずれかのテーブルの横にある [View mappings] をクリックすると、スキーマの問題、欠損している機能、接続性に関する、複製中に発生する可能性のある問題の評価を取得できます。問題が発生した場合は、処理を進める前に問題を解決する必要があります。このチュートリアルでは、いずれかのテーブルに問題がある場合に、テーブルの選択手順に戻って、テーブルまたはイベント(挿入、更新、または削除)を選択します。

    ソース データベースから BigQuery へのデータタイプの変換の詳細については、レプリケーション データタイプをご覧ください。

  12. [Next] をクリックします。

  13. レプリケーション ジョブの詳細の概要を確認し、[レプリケーション ジョブをデプロイする] をクリックします。

ジョブを開始する

  • [レプリケーション ジョブの詳細] ページで、[開始] をクリックします。

レプリケーション ジョブは、プロビジョニング開始実行中の各状態に移行します。実行中の状態では、レプリケーション ジョブによって、選択したテーブルデータの初期スナップショットが BigQuery に読み込まれます。この状態では、テーブルの状態は [スナップショット] として表示されます。最初のスナップショットを BigQuery に読み込むと、テーブルに対する変更はすべて BigQuery に複製され、テーブルの状態は [Replicating] と表示されます。

ジョブをモニタリングする

レプリケーション ジョブの開始と停止、構成とログの確認、レプリケーション ジョブのモニタリングを行うことができます。

[レプリケーション ジョブの詳細] ページから、レプリケーション ジョブ アクティビティをモニタリングできます。

  1. [レプリケーション] ページで、レプリケーション ジョブの [名前] をクリックします。

  2. [モニタリング] をクリックします。

BigQuery で結果を表示する

レプリケーション ジョブは、複製されたデータセットとテーブルを BigQuery に作成し、対応する MySQL データベースとテーブル名を継承します。

  1. Google Cloud コンソールで、[BigQuery] ページに移動します。

    BigQuery に移動

  2. 左側のパネルでプロジェクト名を選択して、データセットのリストを展開します。

  3. 結果を表示するには、sakila データセットを選択し、テーブルを選択します。

詳細については、BigQuery のドキュメントをご覧ください。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

チュートリアルを完了したら、Google Cloud で作成したリソースをクリーンアップし、以後は課金されないようにします。次のセクションで、このようなリソースを削除または無効にする方法を説明します。

Cloud Data Fusion インスタンスを削除する

手順に従って Cloud Data Fusion インスタンスを削除します

プロジェクトを削除する

  1. Google Cloud コンソールで、[リソースの管理] ページに移動します。

    [リソースの管理] に移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

次のステップ