Cloud SQL-MySQL ソースに接続する

このページでは、プライベート Cloud Data Fusion インスタンスを、MySQL データベースをホストするプライベート Cloud SQL インスタンスに接続する方法について説明します。 Postgres インスタンスと SQL Server インスタンスも同様の設定で機能します。パブリック接続が可能です

推奨: セキュリティ上の理由から、Cloud SQL と Cloud Data Fusion のプライベート インスタンスを使用してください。

Cloud Data Fusion と Cloud SQL でプライベート インスタンスを作成する

プライベート Cloud Data Fusion インスタンスからプライベート Cloud SQL インスタンスに接続するには、プロキシ Compute Engine VM を使用します。Cloud SQL ネットワークが Cloud Data Fusion ネットワークと直接ピアリングされておらず、推移的ピアが相互に通信できないため、プロキシが必要です(VPC ネットワーク ピアリングの概要をご覧ください)。

プライベート インスタンスを作成する手順は次のとおりです。

  1. プライベート Cloud Data Fusion インスタンスを作成していない場合は、作成します。モニタリング対象には以下が含まれます。

    1. VPC ネットワークの設定
    2. IP 範囲の割り当て
  2. Cloud Data Fusion インスタンスと同じ VPC ネットワークにプライベート Cloud SQL インスタンスを作成します。

  3. インスタンスが作成されたら、Cloud SQL インスタンスのページに移動し、インスタンスの詳細を展開します。[このインスタンスに接続] セクションで、IP と接続名をコピーします。

    Cloud SQL の [インスタンス] に移動

プライベート Compute Engine VM を作成する

VM を作成するには、Cloud Shell または Google Cloud SDK がインストールされている別の環境で次のコマンドを入力します。

これらのコマンドは、内部 IP アドレスとパブリック IP アドレスの両方を持つ VM を作成します(サンプル VM 作成コマンドでは --no-address が指定されていません)。これにより、VM が Container Registry にアクセスしてプロキシ イメージを取得できます。内部 IP を使用できますが、VM が配置されているサブネットの限定公開の Google アクセスの有効化も行う必要があります。

  1. 次の環境変数をエクスポートします。

    export PROJECT=CUSTOMER_PROJECT
    export REGION=VM_REGION
    export ZONE=`gcloud compute zones list --filter="name=${REGION}" --limit 1 --uri --project=${PROJECT}| sed 's/.*\///'`
    export NETWORK=CUSTOMER_VPC_NETWORK_NAME
    export SUBNET=CUSTOMER_VPC_SUBNET_NAME
    export INSTANCE_NAME=COMPUTE_ENGINE_VM_NAME
    export SQL_CONN=SQL_INSTANCE_CONNECTION_NAME
    export CDF_IP_RANGE=CLOUD_DATA_FUSION_IP_RANGE
    export VM_IMAGE=$(gcloud compute images list --project=$PROJECT --filter=family:cos-stable --format='value(selfLink.scope())' --limit=1)
    export SQL_PORT=DB_PORT # MySQL 3306 # PostgreSQL 5432 # SQLServer 1433
    

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

    • CUSTOMER_PROJECT: プロジェクトの名前
    • VM_REGION: Compute Engine VM が配置されているリージョン
    • CUSTOMER_VPC_NETWORK_NAME: ネットワークの名前
    • CUSTOMER_VPC_SUBNET_NAME: サブネットワークの名前
    • COMPUTE_ENGINE_VM_NAME: Compute Engine VM の名前
    • SQL_INSTANCE_CONNECTION_NAME: 前のステップで取得した接続名
    • CLOUD_DATA_FUSION_IP_RANGE: IP アドレス範囲
    • DB_PORT: Cloud SQL データベースのポート番号
  2. 次の gcloud CLI コマンドを使用して、Cloud Data Fusion の上り(内向き)トラフィックを許可するファイアウォール ルールを作成します。

    gcloud compute firewall-rules create allow-private-cdf \
    --allow=tcp:22,tcp:${SQL_PORT} \
    --source-ranges=$CDF_IP_RANGE --network=$NETWORK --project=$PROJECT
    
  3. 次の gcloud CLI コマンドを使用して VM を作成します。

    gcloud compute --project=${PROJECT} instances create ${INSTANCE_NAME} \
    --zone=${ZONE} \
    --machine-type=g1-small \
    --subnet=${SUBNET} \
    --metadata=startup-script="docker run -d -p 0.0.0.0:${SQL_PORT}:${SQL_PORT} gcr.io/cloudsql-docker/gce-proxy:latest /cloud_sql_proxy -instances=${SQL_CONN}=tcp:0.0.0.0:${SQL_PORT}" \
    --maintenance-policy=MIGRATE \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --image=${VM_IMAGE} \
    --image-project=cos-cloud
    
  4. 次の gcloud CLI コマンドを使用して、VM の内部 IP を取得します。

    export IP=`gcloud compute \
    --project=${PROJECT} instances describe ${INSTANCE_NAME} \
    --zone ${ZONE} | grep "networkIP" | awk '{print $2}'`
    
  5. 次の gcloud CLI コマンドを使用して、VM の内部 IP を静的 IP に昇格させます。

    gcloud compute --project=${PROJECT} addresses create mysql-proxy \
    --addresses ${IP} --region ${REGION} --subnet ${SUBNET}
    
  6. 接続を設定するときに、Cloud Data Fusion MySQL JDBC 接続文字列で使用する IP を取得します。

    echo ${IP}
    

静的 IPを持つ VM が作成されたら、その IP をホストとして使用するか、JDBC 接続文字列に入力して Cloud Data Fusion から MySQL データベースにアクセスします。

Cloud Data Fusion 内から MySQL にアクセスする

Cloud Data Fusion インスタンスから MySQL インスタンスに接続するには、Cloud Data Fusion Hub から(または MySQL コミュニティのダウンロードから直接)MySQL JDBC ドライバをインストールします。

Cloud Data Fusion に MySQL データベースの接続の詳細情報を入力します。詳細情報を入力して接続をテストするには、[Wrangler] ページを使用します。

省略可: MySQL に接続するその他の方法

Cloud Data Fusion では、次の方法で MySQL にアクセスできます。

  • [スタジオ] ページで、MySQL ソース プラグインをクリックして、接続の詳細情報を入力します。
  • スタジオページで、代わりに、同様のプロパティ(接続文字列ユーザー名パスワード接続引数)を持つデータベース ソース プラグインを使用します。

他のコネクション

プライベート インスタンスへの接続が推奨されますが、次の接続が可能です。

  • パブリック Cloud Data Fusion インスタンスをパブリック Cloud SQL インスタンスに接続(パブリック Cloud SQL プロキシを使用するか、承認済みネットワークの 0.0.0.0/0 範囲を許可リストに登録します)。Cloud SQL のパブリック IP 接続オプションをご覧ください。
  • プライベート Cloud Data Fusion インスタンスとパブリック Cloud SQL インスタンス(承認済みネットワークでパブリック Cloud SQL プロキシを使用)。
  • パブリック Cloud Data Fusion インスタンスとプライベート Cloud SQL インスタンス。