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 天的自定义保留期限。
数据库保留操作的工作方式如下:
启用数据库保留功能后,清理操作会在 24 小时内自动运行至少一次。无法为此操作设置自定义时间表。在您启用数据库保留功能或更改保留期限后,Managed Airflow 不会立即执行清理操作。
清理操作不会锁定 Airflow 数据库表,即使中断也会保持数据一致性。
Cloud SQL 存储空间大小增加后,无法通过数据库保留操作来减小。数据库保留操作仅有助于防止 Airflow 数据库随着时间的推移而增大。如需了解更多 信息,请参阅相应的 已知问题。
清理操作会根据 DAG 运行的逻辑日期(而不是执行任务的实际时间)来评估 DAG 运行的保留时间。当回填间隔超出当前保留窗口时,保留进程可能会立即移除这些新创建的运行,因为它们的逻辑日期早于保留期限。因此,这些运行不会显示在 Airflow 界面中。为防止这种情况发生,请在运行回填操作之前,暂时增加保留期限,以涵盖回填间隔的最早日期。
准备工作
- 如果您的环境按时间表运行数据库清理 DAG,则可以在配置数据库保留政策后停止该 DAG。在 Managed Airflow(第 3 代)中,维护 DAG 方法 已过时。此 DAG 会执行冗余工作,您可以停止它来减少资源消耗。
为新环境配置数据库保留
如需在创建环境时启用或停用数据库保留功能,或设置自定义数据库保留期限,请执行以下操作:
控制台
在创建环境 页面中执行以下操作:
在数据库数据保留政策 部分,配置数据库保留:
(默认)如需启用数据库保留功能,请选择启用数据库数据保留政策 。
如需停用数据库保留功能,请选择停用数据库数据保留政策 。
(可选)如需设置自定义保留期限,请在保留期限 字段中指定 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_ENABLED或RETENTION_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
}
}
为现有环境配置数据库保留
如需为现有环境启用或停用数据库保留功能,并设置自定义保留期限,请执行以下操作:
控制台
在 Google Cloud 控制台中,前往 环境 页面。
在环境列表中,点击您的环境名称。环境详情 页面会打开。
转到环境配置 标签页。
数据库数据保留政策 项列出了环境的当前数据库数据保留政策。
点击修改 。
设置数据库保留的状态:
如需启用数据库保留功能,请选择启用数据库数据保留政策 。
如需停用数据库保留功能,请取消选择启用数据库数据保留政策 。
(可选)如需设置自定义保留期限,请在保留期限 字段中指定 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
构建
environments.patchAPI 请求。在此请求中:
在
updateMask参数中,指定config.dataRetentionConfig.airflowMetadataRetentionConfig掩码。在请求正文中,指定数据库保留参数。
{
"config": {
"dataRetentionConfig": {
"airflowMetadataRetentionConfig": {
"retentionMode": "RETENTION_MODE",
"retentionDays": "RETENTION_PERIOD"
}
}
}
}
将
RETENTION_MODE:RETENTION_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_ENABLED或RETENTION_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
}
}
检查数据库保留状态
控制台
在 Google Cloud 控制台中,前往 环境 页面。
在环境列表中,点击您的环境名称。环境详情 页面会打开。
转到环境配置 标签页。
数据库数据保留政策 项列出了环境的当前数据库数据保留政策。
gcloud
gcloud composer environments describe ENVIRONMENT_NAME \
--location LOCATION \
--format="value(config.dataRetentionConfig.airflowMetadataRetentionConfig.retentionMode)"
查看数据库保留日志
您可以在 环境详情 > 日志 >中查看数据库保留操作日志。这些日志 位于 所有日志 > Composer 日志 > 数据库保留 中。
日志条目列出了操作的状态和数据库大小。
如需详细了解如何查看 Managed Service for Apache Airflow 日志,请参阅 查看日志。