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

本文說明如何排解將 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: 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.txttables_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* 資料類型列出的資料表,例如 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.

後續步驟