疑難排解

請先查看下列頁面,確認你的問題是否已有解決方法:

本頁面涵蓋的主題包括:

備份與還原

問題 疑難排解
您無法查看目前作業的狀態。 作業完成時, Google Cloud 控制台只會回報成功或失敗。這項功能不會顯示警告或其他更新。

執行 gcloud sql operations list 指令,列出指定 Cloud SQL 執行個體的所有作業。

您想找出是誰發起了隨選備份作業。 使用者介面不會顯示啟動作業的使用者。

查看記錄,然後依文字篩選,找出使用者。您可能需要使用稽核記錄來取得私人資訊。相關記錄檔包括:

  • cloudsql.googleapis.com/sqlagent.out
  • cloudsql.googleapis.com/sqlserver.err
  • 如果啟用 Cloud 稽核記錄,且您具備查看記錄的必要權限,則可能也會提供 cloudaudit.googleapis.com/activity
執行個體刪除後,您就無法備份該執行個體。

如果您刪除執行個體時沒有最終備份資料,就無法復原資料。不過,如果您還原執行個體,Cloud SQL 也會還原備份。如要進一步瞭解如何復原已刪除的執行個體,請參閱復原備份

如果您已執行匯出作業,請建立新的執行個體,然後執行匯入作業來重建資料庫。匯出作業會寫入 Cloud Storage,匯入作業則會從該處讀取資料。

自動備份作業已停滯數小時,且無法取消。 備份作業可能需要較長時間,視資料庫大小而定。

如果真的需要取消作業,可以請 客戶支援團隊force restart執行個體。

如果 SQL 傾印檔案中有一或多位參照的使用者不存在,還原作業就會失敗。 還原 SQL 傾印檔之前,如果資料庫使用者擁有傾印資料庫中的物件,或已取得傾印資料庫中的物件存取權,這類使用者都必須存在於目標資料庫中。否則還原作業無法以原始擁有權或權限重新建立物件。

還原 SQL 傾印檔前,請先建立資料庫使用者

您想將自動備份的保留天數從 7 天延長至 30 天以上。 您可以 設定要保留的自動備份數量,但不能少於預設數量 (七份)。系統會根據設定的保留值,定期修剪自動備份。很抱歉,這表示您只能從目前顯示的自動備份還原資料。

如要無限期保留備份,可以建立隨選備份,因為這類備份不會像自動備份一樣遭到刪除。隨選備份會無限期保留。也就是說,這些備份會一直存在,直到您刪除備份或刪除所屬執行個體為止。這類備份不會自動刪除,因此可能會影響帳單。

自動備份失敗,且您未收到電子郵件通知。 如要讓 Cloud SQL 通知您備份狀態,請設定以記錄為準的快訊
您無法使用 Transact-SQL RESTORE 指令SQL Server Management Studio (SSMS) 還原執行個體。 Cloud SQL 不支援透過 SSMS 還原執行個體。 如要還原執行個體,請執行 gcloud sql import 指令。

複製

問題 疑難排解
複製作業失敗,並顯示 constraints/sql.restrictAuthorizedNetworks 錯誤。 複製作業遭到「Authorized Networks」設定封鎖。Authorized Networks是在 Google Cloud 控制台的「連線」部分中,針對公開 IP 位址設定,且基於安全考量,不允許複製。

盡可能從 Cloud SQL 執行個體中移除所有 Authorized Networks 項目。否則,請建立副本,但不要包含任何 Authorized Networks 項目。

錯誤訊息:Failed to create subnetwork. Couldn't find free blocks in allocated IP ranges. Please allocate new ranges for this service provider. Help Token: [help-token-id].

您嘗試使用 Google Cloud 控制台複製具有私人 IP 位址的執行個體,但未指定要使用的已分配 IP 範圍,且來源執行個體並非使用指定範圍建立。因此,複製的執行個體會建立在隨機範圍內。

使用 gcloud 複製執行個體,並為
--allocated-ip-range-name 參數提供值。詳情請參閱複製具有私人 IP 的執行個體

連線

問題 疑難排解
Aborted connection 可能的問題如下:
  • 網路不穩定。
  • 對 TCP 存留信號指令沒有回應 (用戶端或伺服器沒有回應,可能已過載)
  • 資料庫引擎連線生命週期已超過,伺服器會結束連線。

應用程式必須能容許網路故障,並遵循最佳做法,例如連線集區和重試。連線集區器大多會盡可能偵測到這些錯誤。否則應用程式必須重試或優雅地失敗。

如要重試連線,建議使用下列方法:

  1. 指數輪詢。每次重試時,重試間隔會呈指數增加。
  2. 也請新增隨機退避。

結合使用這些方法有助於減少節流。

建立執行個體

問題 疑難排解
錯誤訊息:Failed to create subnetwork. Router status is temporarily unavailable. Please try again later. Help Token: [token-ID] 請再次嘗試建立 Cloud SQL 執行個體。
錯誤訊息:HTTPError 400: Invalid request: Incorrect Service Networking config for instance: PROJECT_ID:INSTANCE_NAME:SERVICE_NETWORKING_NOT_ENABLED.

使用下列指令啟用 Service Networking API,然後再次嘗試建立 Cloud SQL 執行個體。

gcloud services enable servicenetworking.googleapis.com \
--project=PROJECT_ID
    
錯誤訊息:Failed to create subnetwork. Required 'compute.projects.get' permission for PROJECT_ID 使用私人 IP 位址建立執行個體時,系統會使用 Service Networking API 即時建立服務帳戶。如果您最近才啟用 Service Networking API,系統可能不會建立服務帳戶,導致執行個體建立作業失敗。在這種情況下,您必須等待服務帳戶在整個系統中傳播,或手動新增服務帳戶並授予必要權限。
錯誤訊息:More than 3 subject alternative names are not allowed. 您嘗試使用自訂 SAN,將超過三個 DNS 名稱新增至 Cloud SQL 執行個體的伺服器憑證。執行個體最多只能新增三個 DNS 名稱。
錯誤訊息:Subject alternative names %s is too long. The maximum length is 253 characters. 請確認要新增至 Cloud SQL 執行個體伺服器憑證的 DNS 名稱不超過 253 個字元。
錯誤訊息:Subject alternative name %s is invalid.

確認要新增至 Cloud SQL 執行個體伺服器憑證的 DNS 名稱符合下列條件:

  • 不含萬用字元。
  • 結尾沒有句點。
  • 符合 RFC 1034 規格。

匯出

問題 疑難排解
HTTP Error 409: Operation failed because another operation was already in progress. 您的執行個體已有待處理的作業。系統一次只能執行一項作業。請待目前的作業完成後再提出要求。
HTTP Error 403: The service account does not have the required permissions for the bucket. 請確認值區存在,且 Cloud SQL 執行個體 (執行匯出作業) 的服務帳戶具備 Storage Object Creator 角色 (roles/storage.objectCreator),以便將匯出內容載入值區。請參閱「Cloud Storage 的 IAM 角色」。
您希望系統自動匯出資料。 Cloud SQL 不提供自動匯出功能。

您可以使用 Cloud Scheduler、Pub/Sub 和 Cloud Run 函式等產品,自行建構自動匯出系統,類似於這篇 自動備份文章。 Google Cloud

旗標

問題 疑難排解
您想修改 Cloud SQL 執行個體的時區。

如要瞭解如何更新執行個體的時區,請參閱「執行個體設定」。

在 SQL Server 適用的 Cloud SQL 中,您可以使用 AT TIME ZONE 函式進行時間轉換等作業。如要進一步瞭解此函式,請參閱「 AT TIME ZONE (Transact-SQL)」。

高可用性

問題 疑難排解
找不到手動容錯移轉的指標。 只有自動容錯移轉會納入指標。
Cloud SQL 執行個體資源 (CPU 和 RAM) 的使用率接近 100%,導致高可用性執行個體停止運作。 執行個體機器大小過小,無法處理負載。

編輯執行個體,升級至較大的機器大小,取得更多 CPU 和記憶體。

匯入

問題 疑難排解
HTTP Error 409: Operation failed because another operation was already in progress 您的執行個體已有待處理的作業。系統一次只能執行一項作業。請待目前的作業完成後再提出要求。
匯入作業耗時過長。 有效連線過多可能會干擾匯入作業。

關閉未使用的作業。檢查 Cloud SQL 執行個體的 CPU 和記憶體用量,確保有充足的可用資源。如要確保匯入作業有最多資源可用,請先重新啟動執行個體,再開始執行作業。

重新啟動:

  • 關閉所有連線。
  • 終止可能消耗資源的任何工作。
如果傾印檔案中有一或多位參照的使用者不存在,匯入作業就會失敗。 匯入傾印檔案前,擁有物件或已取得傾印資料庫中物件存取權的所有資料庫使用者,都必須存在於目標資料庫中。否則匯入作業無法以原始擁有權或權限重新建立物件。

匯入前請先建立資料庫使用者

LSN 不符 交易記錄備份的匯入順序有誤,或交易記錄鏈中斷。
按照備份集資料表中的順序,匯入交易記錄備份。
StopAt 過早 這項錯誤表示交易記錄檔中的第一筆記錄晚於 StopAt 時間戳記。舉例來說,如果交易記錄檔中的第一筆記錄是在 2023-09-01T12:00:00,而 StopAt 欄位的值為 2023-09-01T11:00:00,Cloud SQL 就會傳回這項錯誤。
請務必使用正確的StopAt時間戳記和交易記錄檔。

連結的伺服器

錯誤訊息 疑難排解
Msg 7411, Level 16, State 1, Line 25

Server 'LINKED_SERVER_NAME' is not configured for DATA ACCESS.
DataAccess」選項已停用。執行下列指令,啟用資料存取權:
EXEC sp_serveroption
    @server='LINKED_SERVER_NAME',
    @optname='data access',
    @optvalue='TRUE'

LINKED_SERVER_NAME 替換為連結伺服器的名稱。

Access to the remote server is denied because no login-mapping exists. (Microsoft SQL Server, Error: 7416) 如果您在建立加密連線時遇到這個問題,請嘗試以其他方式提供使用者 ID,存取已連結的伺服器。如要進行這項操作,請執行下列指令:
EXEC master.dbo.sp_addlinkedserver
   @server = N'LINKED_SERVER_NAME',
   @srvproduct= N'',
   @provider= N'SQLNCLI',
   @datasrc= N'TARGET_SERVER_ID',
   @provstr= N'Encrypt=yes;TrustServerCertificate=yes;User ID=USER_ID'

取代下列項目:

  • LINKED_SERVER_NAME 替換為連結伺服器的名稱。
  • TARGET_SERVER_ID,並提供目標伺服器的名稱,或是目標伺服器的 IP 位址和連接埠號碼。
  • USER_ID使用者登入。

記錄

問題 疑難排解
找不到稽核記錄。 只有在作業是經過驗證的使用者驅動 API 呼叫,且會建立、修改或讀取使用者建立的資料,或是作業會存取資源的設定檔或中繼資料時,系統才會寫入資料存取記錄。
記錄中找不到作業資訊。 想進一步瞭解某項作業。

舉例來說,使用者遭到刪除,但您無法找出刪除者。 記錄會顯示作業已啟動,但不會提供任何其他資訊。您必須啟用稽核記錄,系統才會記錄這類詳細的個人識別資訊 (PII)。

系統會從 Cloud SQL for SQL Server 執行個體的 error.log 記錄檔中篩除部分記錄。 篩選後的記錄檔包括: 不含時間戳記的 AD 記錄檔,包括: Login failed for user 'x'. Reason: Token-based server access validation failed with an infrastructure error. Login lacks connect endpoint permission. [CLIENT: 127.0.0.1]。系統會篩除這些記錄,因為這些記錄可能會造成混淆。
記錄檔難以解讀。 您希望以 JSON 或文字格式查看記錄。您可以使用 gcloud logging read 指令搭配 Linux 後續處理指令,下載記錄。

如要以 JSON 格式下載記錄,請按照下列步驟操作:

gcloud logging read \
"resource.type=cloudsql_database \
AND logName=projects/PROJECT_ID \
/logs/cloudsql.googleapis.com%2FLOG_NAME" \
--format json \
--project=PROJECT_ID \
--freshness="1d" \
> downloaded-log.json
    

如要以文字格式下載記錄,請按照下列步驟操作:

gcloud logging read \
"resource.type=cloudsql_database \
AND logName=projects/PROJECT_ID \
/logs/cloudsql.googleapis.com%2FLOG_NAME" \
--format json \
--project=PROJECT_ID \
--freshness="1d"| jq -rnc --stream 'fromstream(1|truncate_stream(inputs)) \
| .textPayload' \
--order=asc
> downloaded-log.txt
   

管理執行個體

問題 疑難排解
臨時儲存空間會自動增加儲存空間。 已啟用自動儲存功能。

重新啟動會刪除暫存檔,但不會減少儲存空間。只有 客戶支援團隊可以重設執行個體大小。

系統正在自動刪除資料。 您的環境中很可能正在執行指令碼。

查看刪除時間前後的記錄,確認是否有來自資訊主頁或其他自動化程序的惡意指令碼正在執行。

無法刪除執行個體。 您可能會看到 ERROR: (gcloud.sql.instances.delete) HTTP Error 409: The instance or operation is not in an appropriate state to handle the request 錯誤訊息,或執行個體可能具有 INSTANCE_RISKY_FLAG_CONFIG 標記狀態。

可能原因包括:

  • 正在處理另一項作業。Cloud SQL 作業不會同時執行。等待其他作業完成。
  • 只要使用至少一個 beta 旗標,就會觸發 INSTANCE_RISKY_FLAG_CONFIG 警告。移除有風險的旗標設定,然後重新啟動執行個體
臨時資料量過大,導致執行個體停滯。 系統可以一次建立多個臨時資料表,視查詢和負載而定。

很抱歉,除了重新啟動服務,您無法透過任何方法縮減 ibtmp1 檔案。

其中一個解決方法是使用 ROW_FORMAT=COMPRESSED 建立臨時資料表,這樣資料表就會儲存在臨時檔案目錄中,以每個資料表一個檔案的形式儲存。不過,為每個臨時資料表建立及移除每個資料表檔案的表空間,會產生效能成本。

升級時發生嚴重錯誤。 記錄檔可能會顯示更多資訊,但無論如何,可能都需要客戶服務強制重新建立執行個體。
磁碟空間不足後,執行個體無法重新啟動。 自動增加儲存空間功能未啟用。

如果執行個體的儲存空間不足,且未啟用自動增加儲存空間功能,執行個體就會離線。如要避免這個問題,請 編輯執行個體,啟用自動增加儲存空間功能。

內部部署的主要執行個體停滯。 Google Cloud 無法協助處理不在 Cloud SQL 中的執行個體。
重新啟動時關機速度緩慢。 執行個體關機時,如果任何未完成的連線未在 60 秒內結束,就會導致關機程序不乾淨。

只要連線時間少於 60 秒,就能避免大多數不乾淨的關機,包括來自資料庫命令提示字元的連線。如果長時間 (數小時或數天) 開啟這些連線,關機時可能會發生不乾淨的關機程序。

無法刪除使用者。 使用者可能在資料庫中擁有依附於該物件的物件。您必須捨棄這些物件,或將其重新指派給其他使用者。

找出依附於該使用者的物件,然後捨棄或重新指派給其他使用者。

這篇 Stack Exchange 討論串說明如何找出使用者擁有的物件。
特定查詢的執行速度緩慢。 查詢速度緩慢的原因有很多,大多與特定資料庫層面有關。其中一個可能涉及 Cloud SQL 的原因是網路延遲,也就是來源 (寫入者或讀取者) 資源和目的地 (Cloud SQL) 資源位於不同區域時,

請特別參閱 一般效能提示

如果資料庫插入、更新或刪除作業速度緩慢,請考慮採取下列行動:

  • 檢查寫入者與資料庫的位置;長距離傳送資料會導致延遲發生。
  • 檢查讀取器和資料庫的位置;延遲對讀取效能的影響,甚至比寫入效能更大

為減少延遲,建議您將來源和目的地資源都放在相同區域。

系統指出記憶體不足,但監控圖表並未顯示此情況。 執行個體可能會失敗並回報 Out of memory,但 Google Cloud 控制台或 Cloud Monitoring 圖表似乎仍顯示有剩餘記憶體。

除了工作負載,其他因素也可能影響記憶體用量,例如有效連線數和內部額外負荷程序。這些內容不一定會反映在監控圖表中。

請確保執行個體有足夠的額外負荷,可因應工作負載,以及一些額外負荷。

復原已刪除的執行個體。 刪除執行個體後,會永久失去該執行個體上的所有資料,包括備份在內。

如要保存資料,請先 將資料匯出至 Cloud Storage,再 刪除執行個體

Cloud SQL 管理員角色具備刪除執行個體的權限。為避免誤刪,請只在必要時授予這個角色。

您想重新命名現有的 Cloud SQL 執行個體。 系統不支援重新命名現有執行個體。

您也可以建立新執行個體,達成相同目標。

  • 您可以複製要重新命名的執行個體,並為複製的執行個體設定新名稱。這樣一來,您就能建立新執行個體,不必手動匯入資料。如同建立新執行個體時,複製的執行個體會有新的 IP 位址。
  • 您可以從執行個體匯出資料至 Cloud Storage bucket,然後使用所需的新名稱建立新執行個體,再將資料匯入新執行個體。

在這兩種情況下,作業完成後,您都可以刪除舊執行個體。建議您選擇複製,因為這不會影響效能,也不需要重新設定任何執行個體設定,例如標記、機器類型、儲存空間大小和記憶體。

刪除執行個體時發生錯誤。 如果執行個體已啟用防刪除功能,請確認您打算刪除該執行個體。然後停用防刪除功能,再刪除執行個體。

Private Service Connect

問題 疑難排解
執行個體的服務附件不接受 Private Service Connect 端點。
  1. 檢查端點的狀態。

    gcloud

    如要查看狀態,請使用
    gcloud compute forwarding-rules describe 指令。

    gcloud compute forwarding-rules describe ENDPOINT_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    | grep pscConnectionStatus

    請將下列項目改為對應的值:

    • ENDPOINT_NAME:端點名稱
    • PROJECT_ID:包含端點的 Google Cloud 專案 ID 或專案編號
    • REGION_NAME:端點的區域名稱

    REST

    使用任何要求資料之前,請先替換以下項目:

    • PROJECT_ID:包含 Private Service Connect 端點的專案 ID 或專案編號 Google Cloud
    • REGION_NAME:區域名稱
    • ENDPOINT_NAME:端點名稱

    HTTP 方法和網址:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME

    如要傳送要求,請展開以下其中一個選項:

    您應該會收到如下的 JSON 回應:

    {
      "kind": "compute#forwardingRule",
      "id": "ENDPOINT_ID",
      "creationTimestamp": "2024-05-09T12:03:21.383-07:00",
      "name": "ENDPOINT_NAME",
      "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME",
      "IPAddress": "IP_ADDRESS",
      "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME",
      "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME",
      "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/default",
      "serviceDirectoryRegistrations": [
        {
          "namespace": "goog-psc-default"
        }
      ],
      "networkTier": "PREMIUM",
      "labelFingerprint": "LABEL_FINGERPRINT_ID",
      "fingerprint": "FINGERPRINT_ID",
      "pscConnectionId": "CONNECTION_ID",
      "pscConnectionStatus": "ACCEPTED",
      "allowPscGlobalAccess": true
    }
    
  2. 確認端點的狀態為 ACCEPTED。如果狀態為 PENDING,表示執行個體不允許含有端點的 Google Cloud 專案。請確認端點建立所在的網路專案已獲准。詳情請參閱「編輯已啟用 Private Service Connect 的執行個體」一文。

複製

問題 疑難排解
建立唯讀副本時,系統未開始複製作業。 記錄檔中可能會有更具體的錯誤。 檢查 Cloud Logging 中的記錄,找出實際錯誤。
無法建立唯讀副本 - invalidFlagValue 錯誤。 要求中的其中一個標記無效。這可能是您明確提供的旗標,也可能是設為預設值的旗標。

首先,請確認 max_connections 旗標的值大於或等於主要執行個體的值。

如果 max_connections 標記設定正確,請檢查 Cloud Logging 中的記錄,找出實際錯誤。

無法建立唯讀副本 - 發生不明錯誤。 記錄檔中可能會有更具體的錯誤。 檢查 Cloud Logging 中的記錄,找出實際錯誤。

如果錯誤訊息為 set Service Networking service account as servicenetworking.serviceAgent role on consumer project,請停用並重新啟用 Service Networking API。這項動作會建立必要的服務帳戶,以便繼續進行程序。

磁碟空間已滿。 建立副本時,主要執行個體的磁碟大小可能會達到上限。 編輯主要執行個體,將其升級為較大的磁碟大小。
副本執行個體使用的記憶體過多。 副本會使用暫存記憶體快取經常要求的讀取作業,因此使用的記憶體可能比主要執行個體多。

重新啟動副本執行個體,即可回收暫存記憶體空間。

複製作業已停止。 儲存空間已達上限,且未啟用自動增加儲存空間功能。

編輯執行個體,啟用 automatic storage increase

複製延遲持續偏高。 副本的寫入負載過高,如果備用資源上的 SQL 執行緒無法跟上 IO 執行緒,就會發生複製延遲。某些查詢或工作負載可能會導致特定結構定義出現暫時或永久的高複製延遲。複製延遲的常見原因包括:
  • 副本上的查詢速度緩慢。找出並修正這些問題。
  • 如果使用以列為基礎的複寫功能,DELETE ... WHERE field < 50000000 這類查詢會造成複寫延遲,因為複本上會累積大量更新。

可能的解決方法包括:

  • 編輯執行個體,增加副本大小。
  • 降低資料庫負載。
  • 將讀取流量傳送至唯讀副本。
  • 將資料表編入索引。
  • 找出並修正寫入查詢速度緩慢的問題。
  • 重新建立副本。
建立副本時發生逾時錯誤。 主要執行個體上未提交的長期交易可能會導致唯讀備用資源建立失敗。

停止所有執行中的查詢後,重新建立副本。