使用过渡集群管理 AlloyDB 维护更新

为了尽可能降低 AlloyDB for PostgreSQL 生产工作负载的风险,您可以使用预演集群来测试新功能、性能和功能,然后再将更新应用于生产系统。预演集群是生产集群的副本,可为维护更新流程增加一层控制。使用预演集群测试维护更新可让您在非生产环境中发现并解决潜在问题。这种方法可降低生产系统出现停机和性能下降的风险。

AlloyDB 的维护更新是定期进行的,通常每月一次。 更新包括新功能、bug 修复、数据库兼容性升级和安全相关修复。虽然 AlloyDB 版本向前兼容,但我们建议您在预演环境中测试新版本,以确保生产集群上关键应用的数据库稳定性和可预测性。

如需使用临时集群,请按以下大致步骤操作:

  1. 设置预演集群。
  2. 为生产集群配置维护窗口。
  3. 管理过渡集群更新。
  4. 管理生产集群更新。

这种针对 AlloyDB 维护的分阶段验证方法可确保您的生产环境在受益于最新的 AlloyDB 功能和补丁的同时,保持稳定、高效和安全。

下图显示了您的预发布集群与正式版集群之间的关系,以及更新流程的运作流程:

生产集群与预演集群之间的关系

如需详细了解维护更新如何与 AlloyDB 集群搭配使用,请参阅维护概览。如需详细了解如何管理维护窗口,请参阅管理 AlloyDB for PostgreSQL 集群维护窗口

准备工作

您使用的 Google Cloud 项目必须已启用才能访问 AlloyDB

如需设置测试集群,您必须创建或已拥有 AlloyDB 生产集群。如需了解详情,请参阅创建集群及其主实例

您必须在所使用的 Google Cloud项目中拥有以下 IAM 角色之一:

  • roles/alloydb.admin:AlloyDB Admin 预定义 IAM 角色
  • roles/owner:Owner 基本 IAM 角色
  • roles/editor:Editor 基本 IAM 角色

如果您没有上述任何角色,请与组织管理员联系以申请访问权限。

设置预演集群

成功实施“先进行过渡”策略的关键在于,确保过渡集群与生产环境类似,并且在生产环境之前接收更新。如果您未在预演集群上设置维护窗口,则会配置“先预演”策略。AlloyDB 会先更新没有维护窗口的集群。

从生产环境备份创建临时集群

部署一个与生产环境相同的预演集群,并确保预演集群与生产集群具有相同的 AlloyDB 版本、配置和数据。

为确保预演集群与生产环境完全相同,请使用 restore 命令将生产数据库克隆到预演集群,并确保数据相似性和配置匹配。我们还建议您将预演环境和生产环境分别布置在不同的项目中。

您可以使用以下两种方法创建生产环境备份:

  • 通过对现有生产集群备份执行完整恢复来创建新的临时集群。此方法不涉及数据库恢复。不过,根据备份时间表,数据最多可能已过时 24 小时。如需使用此方法,请参阅从存储的备份恢复集群
  • 通过对现有生产数据库备份执行时间点恢复 (PITR) 来创建新的临时集群,包括恢复到最新时间。此选项可让您获取最新数据,而且方法更简单。不过,根据上次 PITR 备份的时间,将数据恢复到指定时间可能需要更长时间。如需使用此方法,请参阅使用时间点恢复 (PITR)

验证是否未在临时集群上设置维护窗口

请勿为预演集群设置维护窗口。默认情况下,新创建的 AlloyDB 集群(即使是从备份恢复的集群)也不会设置维护窗口。这是您的预发布环境的正确状态。AlloyDB 会先更新没有安排维护窗口的集群,然后再更新有安排维护窗口的集群。

您可以按以下步骤验证是否未设置维护窗口:

控制台

  1. 前往集群页面。

    转到集群

  2. 资源名称列中点击相应集群。系统随即会显示概览页面。

  3. 概览页面中的维护部分,查看集群的维护窗口详情。

  4. 可选:在系统分析洞见页面上,您可以查看维护操作状态详情,例如事件时间轴

  5. 如需查看统一维护管理,请在搜索栏中输入“Cloud Hub 维护”,然后选择维护。在此页面上,您可以查看维护摘要、Google 控制的维护和计划内维护详情。

gcloud

  1. 如需使用 gcloud CLI,您可以安装并初始化 Google Cloud CLI,也可以使用 Cloud Shell

    gcloud alloydb clusters describe STAGING_CLUSTER_ID \
        --region=LOCATION_ID \
        --project=PROJECT_ID
  2. 在输出中查找 maintenanceSchedule 字段。如果未设置维护窗口,则此字段不存在或为空。如果出于任何原因设置了维护窗口,请将其清除。

    gcloud alloydb clusters update STAGING_CLUSTER_ID \
        --region=LOCATION_ID \
        --clear-maintenance-window \
        --project=PROJECT_ID

为生产集群配置维护窗口

对于生产集群,请务必安排维护窗口。这样,您就可以控制更新发生的时间,并使其与业务的低流量时段保持一致。

为生产集群设置维护窗口

为生产集群安排维护窗口。选择生产系统负载最低的日期和时间。单次维护事件所需的总时间可能会有所不同。

AlloyDB 会在更新预演集群后,自动将生产集群的更新延迟至少一周。如果您在预演集群更新后发现问题,可以拒绝生产环境维护更新长达 30 天,并与Google Cloud 支持团队合作解决问题。

按如下方式为生产集群设置维护窗口:

控制台

  1. 前往集群页面。

    转到集群

  2. 资源名称列中点击相应集群。

  3. 概览页面中的维护部分,点击修改。系统会打开配置窗口。

  4. 首选维护窗口部分,选择要在星期几执行此维护窗口。默认选项为“任意窗口期”。

    创建集群时,AlloyDB 会为其分配此默认维护窗口。

  5. 如果您选择在某天执行维护更新,请选择要在一天中的哪个时段执行维护窗口。

  6. 点击更新以保存更改。

gcloud

如需使用 gcloud CLI,您可以安装并初始化 Google Cloud CLI,也可以使用 Cloud Shell

如需检索 AlloyDB 集群的配置详细信息,请使用 gcloud alloydb clusters update 命令运行以下命令。

gcloud alloydb clusters update PRODUCTION_CLUSTER_ID \
    --region=LOCATION_ID \
    --maintenance-window-day=DAY_OF_WEEK \
    --maintenance-window-hour=HOUR_OF_DAY \
    --project=PROJECT_ID

进行以下替换:

  • PRODUCTION_CLUSTER_ID:生产集群的 ID。
  • LOCATION_ID: Google Cloud 区域。
  • DAY_OF_WEEK:首选维护日期,例如 SUNDAY
  • HOUR_OF_DAY:首选维护时间(以世界协调时间 [UTC] 表示,范围为 0-23)。

    以下示例展示了如何将维护窗口设置为星期日凌晨 2 点(世界协调时间):

    gcloud alloydb clusters update my-prod-cluster \
        --region=us-central1 \
        --maintenance-window-day=SUNDAY \
        --maintenance-window-hour=2 \
        --project=my-production-project

验证生产集群上的维护窗口

如需确认是否已为生产集群设置维护窗口,请运行 gcloud alloydb clusters describe 命令:

gcloud alloydb clusters describe PRODUCTION_CLUSTER_ID \
--region=LOCATION_ID \
--project=PROJECT_ID

输出结果会返回 maintenanceSchedule 字段,其中包含指定的维护日期和时间。

选择接收维护通知

我们建议您选择接收有关生产集群的预定维护事件的通知。这些通知可帮助您规划何时开始测试。

如需选择接收维护通知,请按以下步骤操作:

  1. 前往集群页面。

    转到集群

  2. 资源名称列中点击相应集群。系统随即会显示概览页面。

  3. 概览页面中的维护部分,点击显示详情以展开该部分。然后,点击通知行中的修改。系统随即会打开通信页面。

  4. 通信页面中,选择商品通信标签页。

  5. AlloyDB 对应的行中,将电子邮件列中的通知按钮切换为开启

为生产集群配置维护窗口后,AlloyDB 会在暂存集群更新至少七天后更新生产集群。当您选择接收通知时,您会收到一封电子邮件通知,告知您生产集群已安排维护更新。

预演集群更新

使用预演环境验证即将到来的生产环境更新。

检查更新前状态

由于您的预演集群没有维护窗口,因此它是第一批接收更新的集群。不过,对于未配置维护窗口的集群,AlloyDB 不会发送通知。即便如此,您也可以使用 Google Cloud 控制台中的日志浏览器监控维护更新的发生时间。

  1. 在 Google Cloud 控制台中,前往 Logs Explorer 页面:

    转到日志浏览器

    如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

  2. 选择所有资源,然后选择您的临时集群,并点击应用

  3. 选择所有日志名称,选择 maintenance_events,然后点击应用

  4. 时间轴窗格中,选择您的过渡集群接收更新的时间范围。

执行更新后功能验证

在 AlloyDB 更新暂存集群后,执行功能测试以确认更新安全可靠,适合应用于生产环境。

执行更新后性能验证

在维护更新完成后,验证您的预演集群。评估暂存集群更新后对数据库造成的任何性能影响。执行全面的功能和性能测试,确保应用按预期运行,并满足性能 SLA。

为确保稳定性和最佳运行状态,请执行以下操作:

  • 将更新前的基准与关键指标进行比较。
  • 运行负载测试以确定是否存在回归。
  • 分析查询性能。
  • 监控资源利用率。

根据验证结果采取行动

查看验证结果,并根据结果采取以下操作:

  • 验证成功:如果预演集群上的功能和性能测试成功,则表示预演环境没有错误,您可以让生产维护在预定的时间窗口内按计划进行。为生产环境更新做好准备,并通知相关利益相关者。
  • 验证失败:如果在维护更新后,您在预演集群上进行的功能和性能测试失败,并且在预演环境中遇到功能错误、性能下降或意外行为,则必须拒绝生产维护。

拒绝预定的维护事件

如需拒绝为生产集群安排的维护事件,您必须设置开始日期、结束日期以及间隔的开始和结束时间。

开始日期和结束日期必须采用以下格式:YYYY-MM-DD。开始日期、结束日期和时间均采用世界协调时间 (UTC) 时区。

如需使用 gcloud CLI,您可以安装并初始化 Google Cloud CLI,也可以使用 Cloud Shell

如需向 AlloyDB 集群添加拒绝维护期,请完成以下步骤:

  1. 运行带有 deny-maintenance-period-start-datedeny-maintenance-period-end-datedeny-maintenance-period-time 标志的 gcloud alloydb clusters update 命令:

    gcloud alloydb clusters update CLUSTER_ID \
        --region LOCATION_ID \
        --deny-maintenance-period-start-date START_DATE \
        --deny-maintenance-period-end-date END_DATE \
        --deny-maintenance-period-time TIME
  2. 替换以下内容:

    • CLUSTER_ID:要为其配置免维护期的集群。
    • LOCATION_ID:相应集群所在的 Google Cloud 区域,例如 us-central1
    • START_DATE:免维护期的开始日期,采用 YYYY-MM-DD 世界协调时间 (UTC) 格式。
    • END_DATE:免维护期的结束日期,采用 YYYY-MM-DD 世界协调时间 (UTC) 格式。
    • TIME:免维护期的时间,采用 HH:MM 世界协调时间 (UTC) 格式。小时数以 24 小时制表示,值范围为 00:0023:59,例如 16:45
  3. 记录所有问题,包括错误消息、效果指标和重现问题的步骤。

  4. 向 Google Cloud 提交高优先级的支持请求,并提供所有已记录的问题。 Google Cloud 会与您一起分析并解决问题。

生产环境集群更新

如果预演验证成功,并且您允许继续进行生产环境维护,则更新会在预定的维护窗口期间进行。

验证维护窗口

如需监控生产集群上即将发生的维护事件,请按以下步骤操作:

控制台

  1. 前往集群页面。

    转到集群

  2. 资源名称列中点击相应集群。系统随即会显示概览页面。

  3. 概览页面中的维护部分,查看集群的维护窗口详情。

  4. 可选:在系统分析洞见页面上,您可以查看维护操作状态详情,例如事件时间轴

  5. 如需查看统一维护管理,请在搜索栏中输入“Cloud Hub 维护”,然后选择维护。在此页面上,您可以查看维护摘要、Google 控制的维护和计划内维护详情。

gcloud

如需使用 gcloud CLI,您可以安装并初始化 Google Cloud CLI,也可以使用 Cloud Shell

使用 gcloud alloydb clusters describe 运行以下命令:

gcloud alloydb clusters describe PRODUCTION_CLUSTER_ID \
    --region=LOCATION_ID \
    --project=PROJECT_ID

如果已规划维护事件,输出会包含 maintenanceSchedulestartTime。如果您选择接收通知,还会收到电子邮件通知。

在维护窗口内监控生产环境

虽然 Google Cloud 可自动执行维护流程,但我们建议您在计划的维护窗口期间监控生产环境,以了解以下情况:

  • 应用健康状况:监控应用日志和健康检查,以发现任何中断迹象。
  • 数据库连接:确认应用在中断后可以重新连接到数据库。
  • AlloyDB 指标:使用 Google Cloud Monitoring 观察 AlloyDB 指标(CPU、内存、连接和复制延迟),并确保这些指标在更新后恢复到预期水平。

维护后更新验证

维护更新完成后,请验证生产环境中的关键功能和性能指标。

  • 关键应用功能:对最关键的应用功能运行冒烟测试
  • 基本性能检查:查看信息中心,了解是否存在延迟时间或资源消耗量剧增的情况。