本文档介绍了如何排查在将 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.txt
和 tables_using_reg.txt
)会导出到 postgres_upgrade
。您可以使用标签 labels.FILE_NAME
过滤这些文件。
可能包含要解决的错误的文件名包括:
文件名 | 说明 |
---|---|
|
此文件包含使用对象标识符 (OID) 列出的表。请删除或修改表,使其不使用 OID。 |
|
此文件包含使用系统定义的复合类型列出的表。请删除或修改表,使其不使用这些复合类型。 |
|
此文件包含使用 UNKNOWN 数据类型列出的表。请删除或修改表,使其不使用此数据类型。 |
|
此文件包含使用 SQL_IDENTIFIER 数据类型列出的表。请删除或修改表,使其不使用此数据类型。 |
|
此文件包含使用 REG* 数据类型(例如 REGCOLLATION 或 REGNAMESPACE )列出的表。请删除或修改表,使其不使用此数据类型。 |
|
此文件包含使用 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.
后续步骤
- 了解数据库就地升级主要版本错误。
- 了解如何就地升级数据库主要版本。