已知問題

本頁面列出 PostgreSQL 適用的 Cloud SQL 的已知問題,以及如何避免發生這些問題或如何復原到問題發生之前的狀態。

如果執行個體發生問題,請務必參閱「診斷問題」中的資訊。

執行個體連線問題

  • 到期的 SSL/TLS 憑證

    如果執行個體已設為使用 SSL,請前往 Cloud de Confiance 控制台的 Cloud SQL 執行個體頁面,然後開啟執行個體。開啟「Connections」(連線) 頁面,選取「Security」(安全性) 分頁標籤,確認伺服器憑證有效。如果憑證已過期,請新增憑證並輪替。

  • Cloud SQL Auth Proxy 版本

    如果使用 Cloud SQL Auth Proxy 連線,請確認您使用的是最新版本。詳情請參閱「將 Cloud SQL Auth Proxy 保持在最新狀態」。

  • 未取得授權,無法連線

    如果您嘗試連線至該專案中不存在的執行個體,錯誤訊息只會指出您無權存取該執行個體。

  • 無法建立 Cloud SQL 執行個體

    如果看到 Failed to create subnetwork. Router status is temporarily unavailable. Please try again later. Help Token: [token-ID] 錯誤訊息,請嘗試再次建立 Cloud SQL 執行個體。

  • 下列指令僅適用於預設使用者 (「postgres」): gcloud sql connect --user

    如果嘗試使用這個指令與任何其他使用者連線,系統會顯示 FATAL: database 'user' does not exist 錯誤訊息。解決方法是使用預設使用者 (「postgres」) 連線,然後使用 "\c" psql 指令,以其他使用者身分重新連線。

  • 啟用 IAM 資料庫 Proxy 驗證時,PostgreSQL 連線會停止回應。

    使用 TCP 通訊端和 -enable_iam_login 旗標啟動 Cloud SQL Auth Proxy 時,PostgreSQL 用戶端會在 TCP 連線期間停止運作。其中一個解決方法是在 PostgreSQL 連線字串中使用 sslmode=disable。例如:

    psql "host=127.0.0.1 dbname=postgres user=me@google.com sslmode=disable"

    另一個解決方法是使用 Unix 通訊端啟動 Cloud SQL Auth Proxy。這會關閉 PostgreSQL SSL 加密,並改由 Cloud SQL Auth Proxy 執行 SSL 加密。

管理問題

  • 一個執行個體一次只能執行一項長時間執行的 Cloud SQL 匯入或匯出作業。開始作業時,請確認您不需要對執行個體執行其他作業。此外,您也可以在作業開始後取消作業。

    PostgreSQL 會在單一交易中匯入資料。因此,如果您取消匯入作業,Cloud SQL 就不會保留匯入的資料。

匯入及匯出資料問題

  • 如果 Cloud SQL 執行個體使用 PostgreSQL 17,但資料庫使用 PostgreSQL 16 以下版本,則無法透過 Cloud SQL 將這些資料庫匯入執行個體。請使用資料庫遷移服務。

  • 如果使用資料庫遷移服務將 PostgreSQL 17 資料庫匯入 Cloud SQL,系統會將其匯入為 PostgreSQL 16 資料庫。

  • 如果是 PostgreSQL 15 以上版本,且目標資料庫是從 template0 建立,匯入資料可能會失敗,並顯示 permission denied for schema public 錯誤訊息。如要解決這個問題,請執行 GRANT ALL ON SCHEMA public TO cloudsqlsuperuser SQL 指令,將公開結構定義權限授予 cloudsqlsuperuser 使用者。

  • 匯出許多大型物件會造成執行個體變成無法回應

    如果您的資料庫含有許多大型物件 (blob),則匯出資料庫會耗用許多記憶體,導致執行個體無法回應。即使 blob 是空的,也可能會發生這個問題。

  • Cloud SQL 不支援自訂資料表空間,但支援將資料從自訂資料表空間遷移至目的地執行個體的預設資料表空間 pg_default。舉例來說,如果您擁有位於 /home/data 的資料表空間 dbspace,遷移後,dbspace 內的所有資料都會遷移至 pg_default。但 Cloud SQL 不會在磁碟上建立名為「dbspace」的資料表空間。

  • 如果您嘗試從大型資料庫 (例如資料量達 500 GB 以上的資料庫) 匯入及匯出資料,匯入和匯出作業可能需要較長時間才能完成。此外,在匯入或匯出期間,您無法執行其他作業 (例如備份作業)。如要提升匯入和匯出程序的效能,可以考慮使用 gcloud 或 API 還原先前的備份。

  • Cloud Storage 支援單一物件大小上限為 5 tebibyte (5 TiB)。Cloud SQL 會先壓縮資料,再上傳至 Cloud Storage,因此只有在匯出檔案的「壓縮」大小超過 5 TiB 時,匯出作業才會失敗。

    壓縮率取決於資料庫中的資料類型,例如文字的壓縮效果優於 BLOB 等二進位資料。因此,如果資料高度可壓縮,即使資料庫或資料表大小超過 5 TiB,匯出作業也可能不會失敗,但接近 5 TiB 的未壓縮資料則可能失敗。

    如果執行標準匯出作業,Cloud SQL 通常會建立單一匯出檔案。如果使用平行匯出,Cloud SQL 會建立多個匯出檔案,通常每個資料表一個。如果採用這類匯出作業,只要有任何資料表的壓縮匯出檔案超過 5 TiB,匯出作業就會失敗。

    如果匯出作業因 5 TiB 限制而失敗,請將匯出作業拆分成較小的區隔。如果您使用標準匯出功能,但達到這項限制,建議改用平行匯出功能。

    如果您已使用平行匯出功能,但達到 5 TiB 的限制,代表其中一個資料表太大,即使單獨匯出也無法匯出。在這種情況下,您可以改為從 Compute Engine 執行個體連線,並使用 pg_dump 公用程式匯出資料表。

交易記錄和磁碟成長

記錄檔每天會清除一次,而非持續清除。如果記錄保留天數與備份數量相同,則可能會遺失一天的記錄,具體取決於備份時間。舉例來說,如果將記錄保留期限設為七天,並將備份保留期限設為七個備份,則系統會保留六到七天的記錄。

建議您將備份數量設為至少比記錄保留天數多一個,以確保記錄保留天數至少達到指定天數。

與 Cloud Monitoring 或 Cloud Logging 相關的問題

在某些情況下,具有下列區域名稱的執行個體會顯示錯誤,如下所示:

  • us-central1 顯示為 us-central
  • europe-west1 顯示為 europe
  • asia-east1 顯示為 asia

這個問題會在以下情境中發生:

  • Cloud Monitoring 的警告功能
  • Metrics Explorer
  • Cloud Logging

您可以使用資源中繼資料標籤,緩解 Cloud Monitoring 中的警告和 Metrics Explorer 的問題。請使用系統中繼資料標籤 region,而非 cloudsql_database 受監控資源標籤 region。

使用 psql 用戶端刪除在 Cloud de Confiance 控制台中建立的資料庫時,可能會遇到下列錯誤:

ERROR: must be owner of database [DATABASE_NAME]

這是權限錯誤,因為使用 psql 用戶端建立的資料庫擁有者沒有 Cloud SQL superuser 屬性。使用 Cloud de Confiance 控制台建立的資料庫由cloudsqlsuperuser擁有,使用psql用戶端建立的資料庫則由連線至該資料庫的使用者擁有。Cloud SQL 是代管服務,因此客戶無法建立或存取具備 superuser 屬性的使用者。詳情請參閱「超級使用者限制和權限」。

由於這項限制,使用 Cloud de Confiance 控制台建立的資料庫只能透過 Cloud de Confiance 控制台刪除,而使用psql用戶端建立的資料庫,則只能由資料庫擁有者連線刪除。

如要找出資料庫擁有者,請使用下列指令:

SELECT d.datname as Name,
pg_catalog.pg_get_userbyid(d.datdba) as Owner
FROM pg_catalog.pg_database d
WHERE d.datname = 'DATABASE_NAME';

更改下列內容:

  • DATABASE_NAME:要查詢擁有者資訊的資料庫名稱。

如果資料庫擁有者是 cloudsqlsuperuser,請使用Cloud de Confiance 控制台刪除資料庫。如果資料庫擁有者是 psql 用戶端資料庫使用者,請以資料庫擁有者身分連線,並執行 DROP DATABASE 指令。