疑難排解

請前往下列任一頁面,查看您的問題是否已獲得解決:

本頁主題包括:

備份與還原

問題 疑難排解
您無法查看目前作業的狀態。 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,匯入內容則會從 Cloud Storage 讀取。

自動備份作業卡住好幾個小時,且無法取消。 視資料庫大小而定,備份作業可能需要較長時間。

如果您確實需要取消作業,可以請 客戶服務團隊force restart執行個體。

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

請先 建立資料庫使用者,再還原 SQL 傾印內容。

您想將自動備份的保留天數從七天增加到 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 不提供自動匯出資料的方式。

您可以使用 Google Cloud���品 (例如 Cloud Scheduler、Pub/Sub 和 Cloud Run 函式) 建構自己的自動匯出系統,類似於本文中說明的 自動備份

旗標

問題 疑難排解
您想修改 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 記錄檔中篩除部分記錄。 篩除的記錄檔包括沒有時間戳記的廣告活動記錄檔,包括: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]。這些記錄可能會造成混淆,因此會遭到篩除。
記錄檔不易閱讀。 您可以使用 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 值區,然後使用所需的新名稱建立新的執行個體,再將資料匯入新執行個體。

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

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

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 端點的 Google Cloud 專案 ID 或專案編號
    • 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 執行緒無法跟上 I/O 執行緒時,就會發生複製延遲。某些類型的查詢或工作負載,可能會導致特定結構定義的複製延遲時間暫時或永久性偏高。複製延遲的常見原因包括:
  • 複本上的查詢速度緩慢。找出並修正這些問題。
  • DELETE ... WHERE field < 50000000 這類查詢會導致以列為基礎的複製作業出現延遲,因為複本上會累積大量更新。

可能的解決方法包括:

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

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