数据库就地升级主要版本概览

本文档介绍了 AlloyDB for PostgreSQL 数据库就地升级主要版本,您可以通过这种方式将数据库升级到较新版本,而无需迁移数据或替换现有实例。

PostgreSQL 社区会定期发布新的主要版本,其中包含新功能、性能改进和安全增强功能。PostgreSQL 发布新的主要版本后,AlloyDB 会添加对兼容版本的支持。为了让数据库保持最新,您可以通过升级到更高的主要版本来升级 AlloyDB 集群。您可以使用此就地升级功能升级集群,也可以将数据迁移到新的 AlloyDB 集群。

如需了解详情,请参阅数据库版本政策

主要版本就地升级是升级集群主要版本的一种高效方式,原因如下:

  • 升级后,AlloyDB 会保留集群和实例详细信息以及实例名称、IP 地址和数据库标志等数据库设置。
  • 您无需更改应用连接字符串。
  • 所有集群实例(主实例和读取池)都会在同一操作中升级。

就地主要版本升级工作流

当您在集群上启动升级时,AlloyDB 会执行以下操作:

  1. 运行升级前检查,以查找可能会影响升级的不兼容性问题。
  2. 为主要版本升级做准备,包括创建集群的内部克隆。
  3. 使主实例不可用。开始休息。您仍然可以通过读取池执行读取操作。
  4. 发起升级前备份。
  5. 升级主实例。
  6. 使读取池实例不可用。
  7. 使主实例可用。休息结束。
  8. 启动升级后备份。
  9. 升级读取池实例。

升级前检查通过后,您的集群会克隆到同一项目中的内部集群。克隆集群所需的备份和恢复操作可能需要一些时间才能完成,具体取决于数据库的大小。以下是数据库大小和相应备份和恢复时长的示例:

  • 1 TB 的集群克隆大约需要 30 分钟。
  • 10 TB 的数据集群大约需要 2 小时才能克隆完毕。

在克隆操作期间,您可以继续使用原始集群。克隆操作完成后,升级过程便会开始。主实例升级之前,无法进行读写。预计停机时间通常为 20 分钟到 1 小时,主要取决于数据库架构和对象数量。

如果在升级主实例之前,主要版本升级在任何步骤都失败,AlloyDB 会自动回滚所有更改。

主实例升级后,集群版本会升级到目标版本,此后不会因任何失败而触发回滚。例如,如果一个或多个读取池实例升级失败,AlloyDB 不会回滚集群。在这些情况下,请与 Google Cloud CLI 支持团队联系。

如需了解详情,请参阅就地升级数据库主要版本

升级状态

您可以在数据库主要版本就地升级操作进行期间监控该操作的状态

升级过程包括以下阶段:

  • ALLOYDB_PRECHECK
  • PG_UPGRADE_CHECK
  • PREPARE_FOR_UPGRADE
  • PRIMARY_INSTANCE_UPGRADE
  • READ_POOL_INSTANCES_UPGRADE
  • ROLLBACK(仅在读取池升级之前发生失败时)
  • CLEANUP

这些阶段可能的状态包括:

  • NOT_STARTED
  • IN_PROGRESS
  • SUCCESS
  • FAILED
  • CANCEL_IN_PROGRESS
  • CANCELLED

升级取消

在主实例升级期间,您可以取消升级操作,直到升级到特定阶段。超过该时间后,您将无法取消升级。

在 Google Cloud 控制台中,如果取消升级按钮呈灰显状态,则表示无法取消操作。您可以使用 Google Cloud CLI 或 REST API 检查升级状态中的 upgradeClusterStatus,以确定是否可以取消升级

  • 如果 cancellabletrue,您可以取消升级。
  • 如果 cancellablefalse 或状态中缺少 cancellable,则无法取消升级。

自动执行升级前和升级后备份

执行主要版本升级时,AlloyDB 会自动创建以下连续备份,其中 XX 是源主要版本,YY 是目标主要版本。

  • 升级前备份会在升级开始之前立即创建。此备份的命名采用 pre-upgrade-bkp-pgXX-pgYY-<uuid> 格式。您可以使用此备份恢复到升级前的状态。请注意,恢复不是原地操作,而是会创建一个新集群。
  • 升级后备份会在升级主实例后创建。此备份的命名采用 post-upgrade-bkp-pgXX-pgYY-<uuid> 格式。

持续备份是增量备份,这意味着备份仅存储相对于上次持续备份发生更改的数据。这种方法可以缩减备份的大小和资源费用,并加快备份创建流程。如需了解详情,请参阅数据备份和恢复概览

查看备份列表时,系统会列出类型为 CONTINUOUS 的升级备份。如需了解详情,请参阅查看备份列表

若要执行时间点恢复 (PITR),必须有相应版本的备份。升级后备份或在升级主实例后启动的另一个备份完成之前,升级后的集群无法恢复。

后续步骤