連線至 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 執行個體,您可以使用 Proxy Compute Engine VM。由於 Cloud SQL 網路並未與 Cloud Data Fusion 網路直接對等互連,而間接對等互連無法相互通訊 (請參閱「VPC 網路對等互連簡介」),因此必須使用 Proxy。

如要建立私人執行個體,請按照下列步驟操作:

  1. 如果您還沒有私人執行個體,請建立 Cloud Data Fusion 私人執行個體。包括:

    1. 設定虛擬私有雲網路
    2. 分配 IP 範圍
  2. 在與 Cloud Data Fusion 執行個體相同的 VPC 網路中建立私人 Cloud SQL 執行個體

  3. 建立執行個體後,請前往 Cloud SQL「Instances」頁面,展開「Instance details」。在「Connect to this instance」(連線至這個執行個體) 部分,複製 IP 和連線名稱。

    前往 Cloud SQL 執行個體

建立私人 Compute Engine VM

如要建立 VM,您可以在 Cloud Shell 或已安裝 Google Cloud SDK 的其他環境中輸入下列指令。

這些指令會建立內部和公開 IP 位址的 VM (範例 VM 建立指令未指定 --no-address),讓 VM 可以存取 Container Registry 來取得 Proxy 映像檔。您可以使用內部 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 連線字串中輸入 IP,以便透過 Cloud Data Fusion 存取 MySQL 資料庫。

透過 Cloud Data Fusion 存取 MySQL

您必須先從 Cloud Data Fusion 中樞安裝 MySQL JDBC 驅動程式 (或直接從 MySQL 社群下載),才能從 Cloud Data Fusion 執行個體連線至 MySQL 執行個體。

在 Cloud Data Fusion 中輸入 MySQL 資料庫的連線詳細資料。您可以在「Wrangler」頁面輸入詳細資料,並測試連線。

選用:其他連線至 MySQL 的方法

您可以在 Cloud Data Fusion 中透過下列方式存取 MySQL:

  • 在「Studio」頁面上,按一下 MySQL 來源外掛程式,然後輸入連線詳細資料。
  • 請改為在 Studio 頁面中使用資料庫來源外掛程式,因為它具有類似的屬性 (連線字串使用者名稱密碼連線引數)。

其他連線

雖然建議連線至私人執行個體,但您也可以建立下列連線:

  • 從公開 Cloud Data Fusion 執行個體連線至公開 Cloud SQL 執行個體 (使用公開 Cloud SQL Proxy 或在授權網路中將 0.0.0.0/0 範圍加入許可清單)。請參閱 Cloud SQL 的公開 IP 連線選項
  • 私人 Cloud Data Fusion 執行個體和公開 Cloud SQL 執行個體 (透過在授權網路中使用公開 Cloud SQL Proxy)。
  • 公開 Cloud Data Fusion 執行個體和私人 Cloud SQL 執行個體。