本页面介绍了如何将专用 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 网络对等互连概览)。
如需创建专用实例,请按照以下步骤操作:
如果您还没有 Cloud Data Fusion,请创建一个私有 Cloud Data Fusion 实例。其中包括:
- 设置 VPC 网络
- 分配 IP 范围
创建专用 Cloud SQL 实例 与 Cloud Data Fusion 实例位于同一 VPC 网络中。
创建实例后,转到 Cloud SQL 实例 页面,然后展开实例详情。在连接到此 实例部分中,复制 IP 和连接名称。
创建专用 Compute Engine 虚拟机
如需创建虚拟机,您可以在以下位置输入以下命令: Cloud Shell 或其他 安装了 Google Cloud SDK。
这些命令会创建一个同时具有内部 IP 地址和公共 IP 地址的虚拟机(--no-address
未在虚拟机创建示例命令中指定),以便虚拟机可以访问 Container Registry 以获取代理映像。您可以使用内部
但您还必须
启用专用 Google 访问通道,以便
虚拟机所在的子网
导出以下环境变量:
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 数据库
创建防火墙规则以允许 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
使用以下 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
使用以下 gcloud CLI 命令获取虚拟机的内部 IP:
export IP=`gcloud compute \ --project=${PROJECT} instances describe ${INSTANCE_NAME} \ --zone ${ZONE} | grep "networkIP" | awk '{print $2}'`
使用以下 gcloud CLI 命令将虚拟机内部 IP 地址升级为静态 IP 地址:
gcloud compute --project=${PROJECT} addresses create mysql-proxy \ --addresses ${IP} --region ${REGION} --subnet ${SUBNET}
获取要在 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 实例。