访问 Airflow 数据库

本页面介绍如何连接到运行您的 Cloud Composer 环境的 Airflow 数据库的 Cloud SQL 实例以及如何运行 SQL 查询。

例如,您可能想要直接在 Airflow 数据库上运行查询、进行数据库备份、根据数据库内容收集统计信息,或从数据库中检索任何其他自定义信息。

对于 Cloud Composer 环境,一种方法是从您环境中的 GKE 集群中的虚拟机连接到 Airflow 数据库。

获取环境集群的名称和可用区

  1. 转到 Google Cloud Console 中的防火墙页面。

    转到“环境”页面

  2. 选择您的环境。

  3. 转到环境配置标签页。

  4. GKE 集群项列出了环境的 GKE 集群的名称和可用区。

    例如,如果此参数的值是 projects/example-project/zones/europe-west3-a/clusters/europe-west3-composer-exam--7b206598-gke,则集群名称为 europe-west3-composer-exam--7b206598-gke,集群可用区为 europe-west3-c

获取数据库连接参数

Airflow 1

  1. 访问环境的 Airflow 网页界面

  2. 在 Airflow 网页界面中,转到 Admin > Configuration

  3. 找到 sql_alchemy_conn 参数。

  4. 从此参数的值获取用户名、密码和数据库名称。

    例如,如果此参数的值为 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

Airflow 2

  1. 访问环境的 Airflow 网页界面
  2. 在 Airflow 网页界面中,转到 Admin > Configurations

  3. 找到 sql_alchemy_conn 参数。

  4. 从此参数的值获取用户名、密码和数据库名称。

    例如,如果此参数的值为 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

获取 SQL 代理端点地址

  1. 在 Google Cloud Console 中,转到 Kubernetes Engine > Service 和 Ingress 页面:

    转到“Service 和 Ingress”页面

  2. 为您的集群选择 airflow-sqlproxy-service 服务。您可以使用集群名称或所列的端点 IP 地址范围查找正确的项。

  3. 服务详情页面上,找到服务 pod 的 IP 地址。它列在 Serving pod 部分的端点列中。

创建虚拟机实例

使用以下参数创建新的虚拟机实例

  • Region 绑定将多选选项设置为所有记录中 Region 的所有值。选择与您的集群相同的区域。
  • 可用区。选择与您的集群相同的可用区。
  • 启动磁盘。选择 Linux 发行版,例如 Ubuntu 21.04 LTS
  • (仅适用于专用 IP)指定集群的 IP 范围内的 IP 地址:

    1. 展开管理、安全、磁盘、网络、单独租用项。
    2. 转到网络标签页。
    3. 网络接口中,展开默认接口项。
    4. 展开显示别名 IP 范围
    5. 子网范围中,为您的集群选择 gke-services IP 地址范围。例如 gke-europe-west3-composer-exam7b206598-gke-services-115b26e7。您在上一步中获取了集群的名称。
    6. 别名 IP 范围中,为虚拟机实例指定 IP 地址,该地址在指定子网范围内的 IP 地址范围内。

连接到虚拟机实例并安装 SQL 客户端软件包

Airflow 1

  1. 连接到您在上一步中创建的虚拟机实例

  2. 安装 mysql-client 软件包。

    sudo apt-get update
    sudo apt-get install mysql-client
    

Airflow 2

  1. 连接到您在上一步中创建的虚拟机实例

  2. 安装 postgresql-client 软件包。

    sudo apt-get update
    sudo apt-get install postgresql-client
    

连接到 Airfow 数据库

连接到虚拟机实例时,运行以下命令以连接到 Airflow 数据库:

Airflow 1

mysql --user=USERNAME --password --host=SQL_ENDPOINT DB_NAME

Airflow 2

psql --user=USERNAME --password --host=SQL_ENDPOINT --port=3306 DB_NAME

使用在上面的步骤中获取的值进行替换:

  • USERNAME 替换为用户名。
  • SQL_ENDPOINT 替换为 SQL 端点的 IP 地址。
  • DB_NAME 替换为数据库名称。

运行 SQL 查询

系统会显示提示符。您可以在此提示符中运行 SQL 查询。例如:

SELECT * FROM dag LIMIT 10;

转储数据库内容并转移到存储桶

如需将数据库内容转储到一个文件中,请运行以下命令:

Airflow 1

mysqldump --user=USERNAME --password --host=SQL_ENDPOINT \
    DB_NAME > DUMP_FILE

Airflow 2

pg_dump --user=USERNAME --password --host=SQL_ENDPOINT --port=3306 \
    DB_NAME > DUMP_FILE

您需要将其中的:

  • USERNAME 替换为用户名。
  • SQL_ENDPOINT 替换为 SQL 端点的 IP 地址。
  • DB_NAME 替换为数据库名称。
  • DUMP_FILE 替换为转储文件的名称。例如 dump.sql

如需将转储文件转移到 Cloud Storage 存储分区,请执行以下操作:

gsutil cp DUMP_DILE BUCKET_ADDRESS

您需要将其中的:

  • DUMP_FILE 替换为转储文件的名称。
  • BUCKET_ADDRESS 替换为存储桶的地址。例如 gs://europe-west3-db-dump

或者,您可以使用 gcloud compute scp 将转储文件转移到本地。

后续步骤