连接到 Cloud SQL-MySQL 源

本页面介绍了如何将专用 Cloud Data Fusion 实例连接到 托管 MySQL 数据库的 Cloud SQL 专用实例。类似设置 适用于 Postgres 和 SQL Server 实例。可以建立公开关联

建议:出于安全考虑,请使用 Cloud SQL 和 Cloud Data Fusion 的私有实例。

在 Cloud Data Fusion 和 Cloud SQL 中创建私有实例

如需从专用 Cloud SQL 实例连接到 Cloud Data Fusion 实例,则使用代理 Compute Engine 虚拟机。代理 因为 Cloud SQL 网络未直接与 且传递对等方无法与 Cloud Data Fusion 网络 (请参阅 VPC 网络对等互连概览)。

如需创建专用实例,请按照以下步骤操作:

  1. 如果您还没有 Cloud Data Fusion,请创建一个私有 Cloud Data Fusion 实例。其中包括:

    1. 设置 VPC 网络
    2. 分配 IP 范围
  2. 创建专用 Cloud SQL 实例 与 Cloud Data Fusion 实例位于同一 VPC 网络中。

  3. 创建实例后,转到 Cloud SQL 实例 页面,然后展开实例详情。在连接到此 实例部分中,复制 IP 和连接名称。

    前往“Cloud SQL 实例”页面

创建专用 Compute Engine 虚拟机

如需创建虚拟机,您可以在以下位置输入以下命令: Cloud Shell 或其他 安装了 Google Cloud SDK

这些命令会创建一个同时具有内部 IP 地址和公共 IP 地址的虚拟机(--no-address 未在虚拟机创建示例命令中指定),以便虚拟机可以访问 Container Registry 以获取代理映像。您可以使用内部 但您还必须 启用专用 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 虚拟机
    • CUSTOMER_VPC_NETWORK_NAME:您的影音平台的名称
    • CUSTOMER_VPC_SUBNET_NAME:子网的 名称
    • COMPUTE_ENGINE_VM_NAME:Compute Engine 虚拟机的名称
    • SQL_INSTANCE_CONNECTION_NAME:连接 上一步中的
    • CLOUD_DATA_FUSION_IP_RANGE:IP 地址 续航里程
    • DB_PORT: Cloud SQL 数据库
  2. 创建防火墙规则以允许 Cloud Data Fusion 入站流量 以下 gcloud CLI 命令:

    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 命令创建虚拟机:

    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 命令获取虚拟机的内部 IP:

    export IP=`gcloud compute \
    --project=${PROJECT} instances describe ${INSTANCE_NAME} \
    --zone ${ZONE} | grep "networkIP" | awk '{print $2}'`
    
  5. 使用以下 gcloud CLI 命令将虚拟机内部 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 创建虚拟机后,使用该 IP 作为主机,或在 用于访问 MySQL 数据库的 JDBC 连接字符串 Cloud Data Fusion。

从 Cloud Data Fusion 中访问 MySQL

您必须先从 Cloud Data Fusion Hub 安装 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 代理或在已获授权的网络中将 0.0.0.0/0 范围列入许可名单)。请参阅 Cloud SQL 的公共 IP 连接选项
  • 私有 Cloud Data Fusion 实例和公共 Cloud SQL 实例(通过在已获授权的网络中使用公共 Cloud SQL 代理)。
  • 一个公共 Cloud Data Fusion 实例和一个私有 Cloud SQL 实例。