Cloud Composer 1 |Cloud Composer 2 |Cloud Composer 3
本页面介绍如何连接到运行您的 Cloud Composer 环境的 Airflow 数据库的 Cloud SQL 实例以及如何运行 SQL 查询。
例如,您可能想要直接在 Airflow 数据库上运行查询、进行数据库备份、根据数据库内容收集统计信息,或从数据库中检索任何其他自定义信息。
对于 Cloud Composer 环境,一种方法是从环境的 GKE 集群中的虚拟机连接到 Airflow 数据库。
获取环境集群的名称和可用区
在 Google Cloud 控制台中,前往环境页面。
选择您的环境。
转到环境配置标签页。
GKE 集群项列出了环境的 GKE 集群的名称和可用区。
例如,如果此参数的值是
projects/example-project/zones/europe-west3-a/clusters/europe-west3-composer-exam--7b206598-gke
,则集群名称为europe-west3-composer-exam--7b206598-gke
,集群可用区为europe-west3-a
。
获取数据库连接参数
Airflow 2
- 访问环境的 Airflow 网页界面。
在 Airflow 网页界面中,转到 Admin > Configurations。
找到
sql_alchemy_conn
参数。从此 参数。
例如,如果此参数的值为
postgresql+psycopg2://root:example-password@127.0.0.1:3306/composer-1-17-0-airflow-2-0-1-400fa094
,则用户名为root
,密码为example-password
,数据库名称为composer-1-17-0-airflow-2-0-1-400fa094
。
Airflow 1
- 访问环境的 Airflow 网页界面。
- 在 Airflow 网页界面中,转到 Admin > Configuration。
- 找到
sql_alchemy_conn
参数。 从此 参数。
例如,如果此参数的值是
mysql+mysqldb://root:example-password@127.0.0.1/composer-1-16-2-airflow-1-10-14-3e9e2312?charset=utf8
, 则用户名为root
,密码为example-password
, 数据库名称为composer-1-16-2-airflow-1-10-14-3e9e2312
。
获取数据库端点地址
在 Google Cloud 控制台中,前往 Kubernetes Engine > 网关、服务和Ingress 页面:
为您的集群选择
airflow-sqlproxy-service
服务。您可以使用集群名称或所列的端点 IP 地址范围查找正确的项。在服务详情页面上,找到服务 pod 的 IP 地址。它列在 Serving pod 部分的端点列中。
创建虚拟机实例
使用以下参数创建新的虚拟机实例:
Region 绑定将多选选项设置为所有记录中 Region 的所有值。选择与您的集群相同的区域。
可用区。选择与您的集群相同的可用区。
启动磁盘。选择 Linux 发行版,例如
Ubuntu 21.04 LTS
。指定集群的 IP 范围内的 IP 地址:
- 展开管理、安全、磁盘、网络、单租户项。
- 转到网络标签页。
- 在网络接口中,展开默认接口项。
- 展开显示别名 IP 范围。
- 在子网范围中,为您的集群选择
gke-services
IP 地址范围。例如gke-europe-west3-composer-exam7b206598-gke-services-115b26e7
。您在上一步中获取了集群的名称。 - 在别名 IP 范围中,为虚拟机实例指定 IP 地址,该地址在指定子网范围内的 IP 地址范围内。
连接到虚拟机实例并安装 SQL 客户端软件包
Airflow 2
安装
postgresql-client
软件包。sudo apt-get update sudo apt-get install postgresql-client
Airflow 1
安装
mysql-client
软件包。sudo apt-get update sudo apt-get install mysql-client
连接到 Airflow 数据库
连接到虚拟机实例时,运行以下命令以连接到 Airflow 数据库:
Airflow 2
psql --user=USERNAME --password \
--host=DB_ENDPOINT \
--port=3306 \
DB_NAME
Airflow 1
mysql --user=USERNAME --password \
--host=DB_ENDPOINT \
DB_NAME
使用在上面的步骤中获取的值进行替换:
- 将
USERNAME
替换为用户名。 - 将
DB_ENDPOINT
替换为您获取的数据库端点的 IP 地址 。 DB_NAME
替换为数据库名称。
运行 SQL 查询
系统会显示提示符。您可以在此提示符中运行 SQL 查询。例如:
SELECT * FROM dag LIMIT 10;
转储数据库内容并转移到存储桶
如需将数据库内容转储到一个文件中,请运行以下命令:
Airflow 2
pg_dump --user=USERNAME --password \
--host=DB_ENDPOINT \
--port=3306 \
DB_NAME > DUMP_FILE
Airflow 1
mysqldump --user=USERNAME --password \
--host=DB_ENDPOINT \
DB_NAME > DUMP_FILE
您需要将其中的:
- 将
USERNAME
替换为用户名。 - 将
DB_ENDPOINT
替换为数据库端点的 IP 地址。 DB_NAME
替换为数据库名称。DUMP_FILE
替换为转储文件的名称。例如dump.sql
。
如需将转储文件转移到 Cloud Storage 存储分区,请执行以下操作:
gcloud storage cp DUMP_FILE BUCKET_ADDRESS
替换:
DUMP_FILE
替换为转储文件的名称。BUCKET_ADDRESS
替换为存储桶的地址。例如gs://europe-west3-db-dump
。
或者,您可以使用 gcloud compute scp
将转储文件转移到本地。