配置数据库保留政策

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

本页介绍了如何为 Airflow 数据库配置保留政策,以便自动从中移除较旧的记录,这有助于维护 Airflow 数据库的大小。

数据库保留政策仅适用于 Cloud Composer 3,默认情况下处于停用状态。

数据库保留简介

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

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

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

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

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

  • 您启用数据库保留功能后,系统会在 24 小时内至少自动运行一次清理操作。无法为此操作设置自定义时间表。

  • 在您启用数据库保留功能或更改保留期限后,Cloud Composer 不会立即执行清理操作。如有需要,可以按需运行此操作

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

  • 增加 Cloud SQL 存储空间后,无法通过数据库保留操作来缩减存储空间。数据库保留操作只能防止 Airflow 数据库随着时间的推移而增大。如需了解详情,请参阅相应的已知问题

准备工作

  • 如果您的环境按计划运行数据库清理 DAG,那么您可以在配置数据库保留政策后停止该 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.10.2-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

创建环境时,请在 Environment > 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

创建环境时,data_retention_config 中的 airflow_metadata_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

data_retention_config 中的 airflow_metadata_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 日志 > 数据库保留

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

如需详细了解如何查看 Cloud Composer 日志,请参阅查看日志

后续步骤