排查主要版本就地升级问题

本文档介绍了如何排查在将 AlloyDB for PostgreSQL 数据库升级到就地主要版本时可能遇到的问题。如需了解详情,请参阅就地升级数据库主要版本。如需了解就地升级主要版本时出现的错误,请参阅数据库就地升级主要版本时出现的错误

如需分析升级失败问题,请从响应中确定失败的升级阶段,并使用本文档中的信息确定可能的解决方案。

AlloyDB 会同步验证您的请求,如果存在以下任一情况,则会返回错误消息:

  • 请求无效。例如,如果提供的目标主要版本不受支持,或者低于或等于当前主要版本。
  • 集群资源处于无法触发主要版本升级的状态。例如,如果集群或任何关联的实例均未处于 READY 状态。

如果请求有效,升级可能因以下原因而失败:

  • 在不同阶段执行的升级前检查可能会失败,这表示系统检测到违规问题。您必须先解决这些违规问题,然后才能重新开始升级。
  • 内部错误表示您需要重试升级。如果重试失败,请与 Google Cloud 支持团队联系。

AlloyDB 升级前检查失败

升级前检查失败可能会在以下任一阶段发生:

  • AlloyDB 升级前检查 (ALLOYDB_PRECHECK)
  • pg_upgrade 检查 (PG_UPGRADE_CHECK)
  • 主集群升级 (PRIMARY_INSTANCE_UPGRADE)

升级前检查失败是指 AlloyDB 在升级前验证阶段检测到的问题,可能会导致就地升级主要版本失败。例如,AlloyDB 会检查当前主要版本与目标主要版本之间的扩展程序不兼容性。

升级操作响应的 logs_url 中会填充错误消息。您可以前往 Google Cloud 控制台中的日志浏览器查看这些日志。如需了解详情,请参阅查看升级日志

如需查看日志中可能会显示的失败情况和相应的错误消息,请参阅数据库就地升级主要版本时出现的错误

以下是 AlloyDB 升级前检查在日志中生成的摘要示例:

Total number of databases checked for custom checks: 
Total number of databases containing pg_largeobject: 
Total number of databases containing extensions compatibility violation: 

pg_upgrade 检查失败

PG_UPGRADE_CHECK 使用标准 pg_upgrade 实用程序检查是否存在违规情况。此升级检查包括由各种因素引起的数据不一致,包括特定于版本的数据结构的差异、编码和排序规则的更改、数据类型的修改以及对系统目录的调整。

多个文件(例如在 pg_upgrade 期间生成的 tables_with_oids.txttables_using_reg.txt)会导出到 postgres_upgrade。您可以使用标签 labels.FILE_NAME 过滤这些文件。

可能包含要解决的错误的文件名包括:

文件名 说明

tables_with_oids.txt

此文件包含使用对象标识符 (OID) 列出的表。请删除或修改表,使其不使用 OID。

tables_using_composite.txt

此文件包含使用系统定义的复合类型列出的表。请删除或修改表,使其不使用这些复合类型。

tables_using_unknown.txt

此文件包含使用 UNKNOWN 数据类型列出的表。请删除或修改表,使其不使用此数据类型。

tables_using_sql_identifier.txt

此文件包含使用 SQL_IDENTIFIER 数据类型列出的表。请删除或修改表,使其不使用此数据类型。

tables_using_reg.txt

此文件包含使用 REG* 数据类型(例如 REGCOLLATIONREGNAMESPACE)列出的表。请删除或修改表,使其不使用此数据类型。

postfix_ops.txt

此文件包含使用 postfix(一元)运算符列出的表。请删除或修改表,使其不使用这些运算符。

pg_upgrade 失败

PG_UPGRADE 日志的结构与 PG_UPGRADE_CHECK 日志的结构类似。

以下是标签为 labels.FILE_NAME=pg_upgrade_dump*.log: 的日志示例

pg_upgrade_dump: error: query failed: ERROR: out of shared memory
HINT: You might need to increase max_locks_per_transaction.

后续步骤