排解直接升級主要版本的問題

如要診斷及解決 AlloyDB for PostgreSQL 叢集就地升級主要版本時發生的問題,請在作業回應中找出失敗的升級階段,並處理任何違反升級前檢查規定的情況。如需逐步升級操作說明,請參閱「就地升級資料庫主要版本」。如需特定錯誤訊息和解決方法,請參閱「資料庫就地主要版本升級錯誤」。

AlloyDB 會同步驗證要求,如果符合下列任一情況,就會傳回錯誤訊息:

  • 要求無效。例如,如果提供的目標主要版本不受支援,或小於或等於目前的主要版本。
  • 叢集資源處於無法觸發主要版本升級的狀態。例如,如果叢集或任何相關聯的執行個體並非處於 READY 狀態。

如果要求有效,升級作業可能會因下列原因而失敗:

  • 在各階段執行的升級前檢查可能會失敗,這表示偵測到違規事項。您必須先解決這些違規問題,才能重新開始升級。
  • 內部錯誤表示您需要重新嘗試升級。如果重試失敗,請與 Cloud Customer Care 聯絡。

AlloyDB 升級前檢查失敗

升級前檢查失敗可能發生在下列任一階段:

  • AlloyDB 升級前檢查 (ALLOYDB_PRECHECK)
  • pg_upgrade 項檢查 (PG_UPGRADE_CHECK)
  • 主要叢集升級 (PRIMARY_INSTANCE_UPGRADE)

升級前檢查失敗是指 AlloyDB 在升級前驗證階段偵測到的問題,可能導致就地主要版本升級失敗。舉例來說,AlloyDB 會檢查目前和目標主要版本之間的擴充功能不相容性。

錯誤訊息會填入升級作業回應的 logs_url。如要查看這些記錄,請前往 Google Cloud 控制台的「Logs Explorer」。詳情請參閱「查看升級記錄」。

如要查看記錄中可能出現的失敗和對應錯誤訊息,請參閱「資料庫就地主要版本升級錯誤」。

以下是 AlloyDB 升級前檢查在記錄中生成的摘要範例:

Total number of databases checked for custom checks: 3
Total number of databases containing pg_largeobject: 0
Total number of databases containing event triggers permissions issue: 0
Total number of databases containing extensions compatibility violation: 1
Total number of databases containing search path violations: 0

pg_upgrade 檢查失敗

PG_UPGRADE_CHECK 會使用標準 pg_upgrade 公用程式檢查違規情形。這項升級檢查包含因各種因素而產生的資料不一致問題,包括版本專屬資料結構的差異、編碼和定序的變更、資料類型的修改,以及系統目錄的調整。

多個檔案 (例如 pg_upgrade 期間產生的 tables_with_oids.txt 和 tables_using_reg.txt) 會匯出至 postgres_upgrade 記錄檔。您可以使用 labels.FILE_NAME 標籤篩選這些檔案。

可能含有待解決錯誤的檔案名稱包括:

檔案名稱 說明

tables_with_oids.txt

這個檔案包含以物件 ID (OID) 列出的資料表。請刪除資料表或修改資料表,使其不使用 OID。

tables_using_composite.txt

這個檔案包含使用系統定義複合類型列出的資料表。請刪除資料表,或修改資料表,避免使用這些複合類型。

tables_using_unknown.txt

這個檔案包含使用 UNKNOWN 資料類型列出的資料表。請刪除資料表,或修改資料表,使其不使用這個資料類型。

tables_using_sql_identifier.txt

這個檔案包含使用 SQL_IDENTIFIER 資料類型列出的資料表。請刪除資料表,或修改資料表,使其不使用這個資料類型。

tables_using_reg.txt

這個檔案包含使用 REG* 資料類型列出的資料表,例如 REGCOLLATION 或 REGNAMESPACE。請刪除資料表,或修改資料表,使其不使用這個資料類型。

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.

後續步驟