Cloud Composer 1 | Cloud Composer 2
本页面介绍了如何配置环境以按计划保存快照。
如需详细了解环境快照的工作原理以及如何手动保存快照,请参阅保存和加载快照。
计划快照的工作原理
启用计划快照后,Cloud Composer 会定期将您环境的快照保存到 Cloud Storage 存储桶中。
如果您手动创建快照,则 Cloud Composer 会默认将快照保存在环境的存储桶中。对于计划快照,我们建议将快照保存在单独的存储桶中。这样,您就可以为此存储桶设置权限和生命周期配置。一个存储桶可以保存来自多个环境的快照,您还可以创建地理位置冗余的存储桶。
准备工作
- Cloud Composer 在 2.0.32 及更高版本中支持计划快照。2.0.9 及更高版本支持环境快照。
为计划快照创建存储桶
为计划快照创建存储桶。请考虑您想要如何使用环境快照。如果这是您的灾难恢复计划的一部分,请使用地理位置冗余存储桶或其他区域中的存储桶,这样即使发生完全区域服务中断,您也可以访问数据。否则,与环境位于同一区域中的存储桶可能更适合,在这种情况下,您可以降低在区域之间传输数据的费用。
为存储桶配置权限
配置以下权限:
您的环境的服务帐号必须具有此存储桶的读写权限。例如,Storage Object Admin 角色具有此类权限。
除非您想要通过 Google Cloud 控制台查看存储桶的内容,否则用户帐号无需为存储桶提供任何其他权限,即可从其中加载快照。在这种情况下,用户帐号必须具有存储桶的读取权限。
为存储桶设置生命周期配置
为节省存储费用,您可以配置在一段时间后删除环境快照的规则。
例如,如需自动删除存在时间超过 30 天的快照,请执行以下操作:
- 为存储桶设置生命周期配置。
- 指定删除对象操作。
- 选择存在时间,然后选择 30 天作为条件。
为您的环境启用快照时间表
控制台
在 Google Cloud 控制台中,转到环境页面。
在环境列表中,点击您的环境名称。环境详情页面会打开。
转到环境配置标签页。
在恢复配置 > 快照时间表中,点击修改。此时会打开快照时间表窗格。
在快照时间表窗格中,选择根据指定的时间表定期创建快照。
在时间表频率下拉列表中,选择每天、每周或自定义的快照时间段。
您可以使用 unix-cron 格式指定自定义时间表。例如,如需每 30 分钟保存一次快照,请指定
*/30 * * * *
。在快照位置字段中,选择要保存快照的存储桶文件夹。
gcloud
更新您的环境配置。以下参数定义了计划快照的参数:
--enable-scheduled-snapshot-creation
可启用计划快照。--snapshot-location
指定要在其中保存快照的存储桶文件夹。--snapshot-creation-schedule
以 unix-cron 格式指定必须截取环境快照的频率。例如,如需每 30 分钟创建一次快照,请指定*/30 * * * *
。--snapshot-schedule-timezone
定义时间表的时区。该值是时间偏移值,不会考虑夏令时变化。有效值范围为UTC-12
至UTC+12
。示例:UTC
、UTC-01
、UTC+03
。
gcloud beta composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--enable-scheduled-snapshot-creation \
--snapshot-location "gs://SNAPSHOTS_FOLDER" \
--snapshot-creation-schedule "CRON_EXPRESSION" \
--snapshot-schedule-timezone "TIME_ZONE"
您需要将其中的:
ENVIRONMENT_NAME
替换为环境的名称。LOCATION
替换为环境所在的区域。- 将
SNAPSHOTS_FOLDER
替换为用于保存快照的存储桶文件夹的 URI。 - 将
CRON_EXPRESSION
替换为时间表(采用 unix-cron 格式)。 TIME_ZONE
替换为时间表的时区。
示例(每天 4:00,UTC+01):
gcloud beta composer environments update example-environment \
--location us-central1 \
--enable-scheduled-snapshot-creation \
--snapshot-location "gs://example-bucket/environment_snapshots" \
--snapshot-creation-schedule "0 4 * * *" \
--snapshot-schedule-timezone "UTC+01"
API
构建 environments.patch
API 请求。
在此请求中:
在
updateMask
参数中,指定config.recoveryConfig.scheduledSnapshotsConfig
掩码以替换现有的计划快照配置。在请求正文中,指定快照的配置:
{ "config": { "recoveryConfig": { "scheduledSnapshotsConfig": { "enabled": true, "snapshot_location": "gs://SNAPSHOTS_FOLDER", "snapshot_creation_schedule": "CRON_EXPRESSION", "time_zone": "TIME_ZONE" } } } }
您需要将其中的:
- 将
SNAPSHOTS_FOLDER
替换为用于保存快照的存储桶文件夹的 URI。 将
CRON_EXPRESSION
替换为时间表(采用 unix-cron 格式)。TIME_ZONE
替换为时间表的时区。该值是时间偏移值,不会考虑夏令时变化。有效值范围为UTC-12
至UTC+12
。示例:UTC
、UTC-01
、UTC+03
。
- 将
示例(每天 4:00,UTC+01):
// PATCH https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.recoveryConfig.scheduledSnapshotsConfig
```json
{
"config": {
"recoveryConfig": {
"scheduledSnapshotsConfig": {
"enabled": true,
"snapshot_location": "gs://example-bucket/environment_snapshots",
"snapshot_creation_schedule": "0 4 * * *",
"time_zone": "UTC+01"
}
}
}
}
```
停用计划快照
如果您停用计划快照,则系统不会修改或移除已拍摄的所有现有快照。这些快照会保留在保存位置。
控制台
在 Google Cloud 控制台中,转到环境页面。
在环境列表中,点击您的环境名称。环境详情页面会打开。
转到环境配置标签页。
在恢复配置 > 快照时间表中,点击修改。此时会打开快照时间表窗格。
在快照时间表窗格中,选择不要自动创建快照。
gcloud
更新您的环境配置。--disable-scheduled-snapshot-creation
参数会停用计划快照。
gcloud beta composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--disable-scheduled-snapshot-creation
您需要将其中的:
ENVIRONMENT_NAME
替换为环境的名称。LOCATION
替换为环境所在的区域。
示例:
gcloud beta composer environments update example-environment \
--location us-central1 \
--disable-scheduled-snapshot-creation
API
构建 environments.patch
API 请求。
在此请求中:
在
updateMask
参数中,指定config.recoveryConfig.scheduledSnapshotsConfig.enabled
掩码以替换enabled
字段的值。在请求正文中,指定新值:
{ "config": { "recoveryConfig": { "scheduledSnapshotsConfig": { "enabled": false } } } }
示例:
// PATCH https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.recoveryConfig.scheduledSnapshotsConfig.enabled
```json
{
"config": {
"recoveryConfig": {
"scheduledSnapshotsConfig": {
"enabled": false
}
}
}
}
```