本文档介绍了 AlloyDB for PostgreSQL 数据库就地升级主要版本,您可以通过这种方式将数据库升级到较新版本,而无需迁移数据或替换现有实例。
PostgreSQL 社区会定期发布新的主要版本,其中包含新功能、性能改进和安全增强功能。PostgreSQL 发布新的主要版本后,AlloyDB 会添加对兼容版本的支持。为了让数据库保持最新,您可以通过升级到更高的主要版本来升级 AlloyDB 集群。您可以使用此就地升级功能升级集群,也可以将数据迁移到新的 AlloyDB 集群。
如需了解详情,请参阅数据库版本政策。
主要版本就地升级是升级集群主要版本的一种高效方式,原因如下:
- 升级后,AlloyDB 会保留集群和实例详细信息以及实例名称、IP 地址和数据库标志等数据库设置。
- 您无需更改应用连接字符串。
- 所有集群实例(主实例和读取池)都会在同一操作中升级。
就地主要版本升级工作流
当您在集群上启动升级时,AlloyDB 会执行以下操作:
- 运行升级前检查,以查找可能会影响升级的不兼容性问题。
- 为主要版本升级做准备,包括创建集群的内部克隆。
- 使主实例不可用。开始休息。您仍然可以通过读取池执行读取操作。
- 发起升级前备份。
- 升级主实例。
- 使读取池实例不可用。
- 使主实例可用。休息结束。
- 启动升级后备份。
- 升级读取池实例。
升级前检查通过后,您的集群会克隆到同一项目中的内部集群。克隆集群所需的备份和恢复操作可能需要一些时间才能完成,具体取决于数据库的大小。以下是数据库大小和相应备份和恢复时长的示例:
- 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
,以确定是否可以取消升级:
- 如果
cancellable
为true
,您可以取消升级。 - 如果
cancellable
为false
或状态中缺少cancellable
,则无法取消升级。
自动执行升级前和升级后备份
执行主要版本升级时,AlloyDB 会自动创建以下连续备份,其中 XX
是源主要版本,YY
是目标主要版本。
- 升级前备份会在升级开始之前立即创建。此备份的命名采用
pre-upgrade-bkp-pgXX-pgYY-<uuid>
格式。您可以使用此备份恢复到升级前的状态。请注意,恢复不是原地操作,而是会创建一个新集群。 - 升级后备份会在升级主实例后创建。此备份的命名采用
post-upgrade-bkp-pgXX-pgYY-<uuid>
格式。
持续备份是增量备份,这意味着备份仅存储相对于上次持续备份发生更改的数据。这种方法可以缩减备份的大小和资源费用,并加快备份创建流程。如需了解详情,请参阅数据备份和恢复概览。
查看备份列表时,系统会列出类型为 CONTINUOUS
的升级备份。如需了解详情,请参阅查看备份列表。
若要执行时间点恢复 (PITR),必须有相应版本的备份。升级后备份或在升级主实例后启动的另一个备份完成之前,升级后的集群无法恢复。