配置数据库保留政策

Managed Airflow(第 3 代) | Managed Airflow(第 2 代) | Managed Airflow(旧版第 1 代)

本页介绍了如何为 Airflow 数据库配置保留政策,以便自动从中移除旧记录,从而帮助保持 Airflow 数据库的大小。

数据库保留政策仅在 Managed Airflow(第 3 代)中提供。

关于数据库保留

随着时间的推移,环境的 Airflow 数据库会存储越来越多的数据。这些数据包括与过往 DAG 运行、任务和其他 Airflow 操作相关的信息和日志。

如果您为环境中的 Airflow 数据库设置了保留期限:

  • Managed Airflow 会移除与 DAG 执行和用户会话相关的记录,这些记录的保留时间超过了指定时间段。
  • 系统始终会保留最新的 DAG 运行信息,即使相关记录的保留期限已过也是如此。
  • 默认保留期限为 60 天。您可以设置 30 到 730 天的自定义保留期限。

数据库保留操作的工作方式如下:

  • 默认情况下,数据库保留处于启用状态 。您可以为环境或现有环境启用或 停用此功能。默认保留期限为 60 天。

  • 启用数据库保留功能后,清理操作会在 24 小时内自动运行至少一次。无法为此操作设置自定义时间表。在您启用数据库保留功能或更改保留期限后,Managed Airflow 不会立即执行清理操作。

  • 清理操作不会锁定 Airflow 数据库表,即使中断也会保持数据一致性。

  • Cloud SQL 存储空间大小增加后,无法通过数据库保留操作来减小。数据库保留操作仅有助于防止 Airflow 数据库随着时间的推移而增大。如需了解更多 信息,请参阅相应的 已知问题

  • 清理操作会根据 DAG 运行的逻辑日期(而不是执行任务的实际时间)来评估 DAG 运行的保留时间。当回填间隔超出当前保留窗口时,保留进程可能会立即移除这些新创建的运行,因为它们的逻辑日期早于保留期限。因此,这些运行不会显示在 Airflow 界面中。为防止这种情况发生,请在运行回填操作之前,暂时增加保留期限,以涵盖回填间隔的最早日期。

准备工作

  • 如果您的环境按时间表运行数据库清理 DAG,则可以在配置数据库保留政策后停止该 DAG。在 Managed Airflow(第 3 代)中,维护 DAG 方法 已过时。此 DAG 会执行冗余工作,您可以停止它来减少资源消耗。

为新环境配置数据库保留

如需在创建环境时启用或停用数据库保留功能,或设置自定义数据库保留期限,请执行以下操作:

控制台

创建环境 页面中执行以下操作:

  1. 数据库数据保留政策 部分,配置数据库保留:

    • (默认)如需启用数据库保留功能,请选择启用数据库数据保留政策

    • 如需停用数据库保留功能,请选择停用数据库数据保留政策

  2. (可选)如需设置自定义保留期限,请在保留期限 字段中指定 30 到 730 天之间的保留期限。

gcloud

创建环境时,--airflow-database-retention-days 实参会启用数据库保留功能并指定保留期限(以天为单位)。

必须始终明确指定此实参:

  • 值为 0 表示停用数据库保留功能。
  • 指定 60 以使用默认值。
  • 指定一个值以设置 30 到 730 天之间的自定义数据库保留期限。
gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.11.1-build.9 \
    --airflow-database-retention-days RETENTION_PERIOD

替换以下内容:

  • ENVIRONMENT_NAME:您的环境的名称。
  • LOCATION:环境所在的区域。
  • RETENTION_PERIOD:保留期限的自定义值。

示例:

gcloud composer environments create example-environment \
    --location us-central1 \
    --airflow-database-retention-days 60

API

创建环境时,在环境 > EnvironmentConfig > [DataRetentionConfig][api-res-data-retention-config] > AirflowMetadataRetentionPolicyConfig 资源中,指定数据库保留参数:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "dataRetentionConfig": {
      "airflowMetadataRetentionConfig": {
        "retentionMode": "RETENTION_MODE_ENABLED",
        "retentionDays": "RETENTION_PERIOD"
      }
    }
  }
}

替换以下内容:

  • ENVIRONMENT_NAME:您的环境的名称。
  • LOCATION:环境所在的区域。
  • RETENTION_PERIOD:保留期限的自定义值,介于 30 到 730 天之间。

示例:


// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
  "config": {
    "dataRetentionConfig": {
      "airflowMetadataRetentionConfig": {
        "retentionMode": "RETENTION_MODE_ENABLED",
        "retentionDays": "90"
      }
    }
  }
}

Terraform

创建环境时,airflow_metadata_retention_config 块 在 data_retention_config 中会指定数据库保留参数:

  • retention_mode 字段指定数据库保留模式:

    • (默认)RETENTION_MODE_ENABLED 会启用数据库保留功能。
    • RETENTION_MODE_DISABLED 会停用数据库保留功能。
  • (可选)retention_days 指定自定义保留期限。默认值为 60 天。

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {
    data_retention_config {
      airflow_metadata_retention_config {
        retention_mode = "RETENTION_MODE"
        retention_days = RETENTION_PERIOD
      }
    }
  }
}

替换以下内容:

  • ENVIRONMENT_NAME:您的环境的名称。
  • LOCATION:环境所在的区域。
  • RETENTION_MODE:数据库保留模式 (RETENTION_MODE_ENABLEDRETENTION_MODE_DISABLED)。
  • RETENTION_PERIOD:保留期限的自定义值,介于 30 到 730 天之间。

示例:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {
    data_retention_config {
      airflow_metadata_retention_config {
        retention_mode = "RETENTION_MODE_ENABLED"
        retention_days = 90
      }
    }

为现有环境配置数据库保留

如需为现有环境启用或停用数据库保留功能,并设置自定义保留期限,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,前往 环境 页面。

    转到“环境”

  2. 在环境列表中,点击您的环境名称。环境详情 页面会打开。

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

  4. 数据库数据保留政策 项列出了环境的当前数据库数据保留政策。

  5. 点击修改

  6. 设置数据库保留的状态:

    • 如需启用数据库保留功能,请选择启用数据库数据保留政策

    • 如需停用数据库保留功能,请取消选择启用数据库数据保留政策

  7. (可选)如需设置自定义保留期限,请在保留期限 字段中指定 30 到 730 天之间的保留期限。

gcloud

--airflow-database-retention-days 实参会启用数据库保留功能并指定保留期限(以天为单位)。值为 0 表示停用数据库保留功能。

gcloud composer environments update ENVIRONMENT_NAME \
    --airflow-database-retention-days RETENTION_PERIOD

替换以下内容:

  • ENVIRONMENT_NAME:您的环境的名称。
  • LOCATION:环境所在的区域。
  • RETENTION_PERIOD:保留期限的自定义值,介于 30 到 730 天之间。

示例:

gcloud composer environments update example-environment \
    --location us-central1 \
    --airflow-database-retention-days 60

API

  1. 构建 environments.patch API 请求。

  2. 在此请求中:

    1. updateMask 参数中,指定 config.dataRetentionConfig.airflowMetadataRetentionConfig 掩码。

    2. 在请求正文中,指定数据库保留参数。

{
  "config": {
    "dataRetentionConfig": {
      "airflowMetadataRetentionConfig": {
        "retentionMode": "RETENTION_MODE",
        "retentionDays": "RETENTION_PERIOD"
      }
    }
  }
}

  • RETENTION_MODERETENTION_MODE_ENABLED 会启用数据库保留功能, RETENTION_MODE_DISABLED 会停用数据库保留功能。
  • RETENTION_PERIOD:保留期限的自定义值,介于 30 到 730 天之间。如果省略此字段,则使用默认值(60 天)。

示例:

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.dataRetentionConfig.airflowMetadataRetentionConfig

{
  "config": {
    "dataRetentionConfig": {
      "airflowMetadataRetentionConfig": {
        "retentionMode": "RETENTION_MODE_ENABLED",
        "retentionMode": "90"
      }
    }
  }
}

Terraform

airflow_metadata_retention_config 块 在 data_retention_config 中会指定数据库保留参数:

  • retention_mode 字段指定数据库保留模式:

    • (默认)RETENTION_MODE_ENABLED 会启用数据库保留功能。
    • RETENTION_MODE_DISABLED 会停用数据库保留功能。
  • (可选)retention_days 指定自定义保留期限。默认值为 60 天。

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {
    data_retention_config {
      airflow_metadata_retention_config {
        retention_mode = "RETENTION_MODE"
        retention_days = RETENTION_PERIOD
      }
    }
  }
}

替换以下内容:

  • ENVIRONMENT_NAME:您的环境的名称。
  • LOCATION:环境所在的区域。
  • RETENTION_MODE:数据库保留模式 (RETENTION_MODE_ENABLEDRETENTION_MODE_DISABLED)。
  • RETENTION_PERIOD:保留期限的自定义值,介于 30 到 730 天之间。

示例:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {
    data_retention_config {
      airflow_metadata_retention_config {
        retention_mode = "RETENTION_MODE_ENABLED"
        retention_days = 90
      }
    }

检查数据库保留状态

控制台

  1. 在 Google Cloud 控制台中,前往 环境 页面。

    转到“环境”

  2. 在环境列表中,点击您的环境名称。环境详情 页面会打开。

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

  4. 数据库数据保留政策 项列出了环境的当前数据库数据保留政策。

gcloud

gcloud composer environments describe ENVIRONMENT_NAME \
  --location LOCATION \
  --format="value(config.dataRetentionConfig.airflowMetadataRetentionConfig.retentionMode)"

查看数据库保留日志

您可以在 环境详情 > 日志 >中查看数据库保留操作日志。这些日志 位于 所有日志 > Composer 日志 > 数据库保留 中。

日志条目列出了操作的状态和数据库大小。

如需详细了解如何查看 Managed Service for Apache Airflow 日志,请参阅 查看日志

后续步骤