疑難排解

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

本頁面涵蓋的主題包括:

備份與還原

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

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

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

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

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

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

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

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

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

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

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

您想將自動備份的保留天數從 7 天延長至 30 天以上。 您可以 設定要保留的自動備份數量,範圍為 1 到 365。系統會根據設定的保留值,定期修剪自動備份。很抱歉,這表示您只能從目前顯示的自動備份還原資料。

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

自動備份失敗,且您未收到電子郵件通知。 如要讓 Cloud SQL 通知您備份狀態,請設定以記錄為準的快訊

取消匯入和匯出作業

問題 疑難排解
錯誤訊息:You can't cancel operation [operation-ID] because this operation isn't in progress.

您嘗試取消的匯入或匯出作業已完成、失敗或取消。如果作業正在執行,可以取消作業。

錯誤訊息:You can't cancel operation [operation-ID] because Cloud SQL doesn't support the cancellation of an [operation-type] operation.

Cloud SQL 不支援取消作業,因為作業的作業類型不是 IMPORTEXPORT

錯誤訊息:The [operation-type] operation isn't cancelled. Wait and retry in a few seconds.

Cloud SQL 目前無法取消匯入或匯出作業。 請稍後再試。如果問題仍未解決,請與Google Cloud 支援團隊聯絡。

複製

問題 疑難排解
複製作業失敗,並顯示 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. 也請新增隨機退避。

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

Certificate verify failed

用戶端憑證已過期,或憑證路徑不正確。

重新建立憑證,即可重新產生憑證。

建立執行個體

問題 疑難排解
錯誤訊息:Failed to create subnetwork. Couldn't find free blocks in allocated IP ranges. Please allocate new ranges for this service provider 分配的 IP 範圍內沒有其他可用位址。可能的情況如下:

  • 分配給私人服務連線的 IP 範圍小於 /24。
  • 為私人服務連線分配的 IP 範圍大小,不足以容納 Cloud SQL 執行個體數量。
  • 如果在多個區域中建立執行個體,分配的 IP 範圍大小需求會更大。請參閱已分配範圍大小

如要解決這個問題,您可以擴展現有的分配 IP 範圍,或為私人服務連線分配額外的 IP 範圍。詳情請參閱分配 IP 位址範圍

如果您在建立 Cloud SQL 執行個體時使用了 --allocated-ip-range-name 標記,則只能擴充指定的 IP 範圍。

如要分配新範圍,請注意分配範圍不得與任何現有分配範圍重疊。

建立新的 IP 範圍後,請執行下列指令更新 VPC 對等互連:

gcloud services vpc-peerings update \
--service=servicenetworking.googleapis.com \
--ranges=OLD_RESERVED_RANGE_NAME,NEW_RESERVED_RANGE_NAME \
--network=VPC_NETWORK \
--project=PROJECT_ID \
--force
    

如果擴展現有分配範圍,請務必只增加分配範圍,不要縮小。舉例來說,如果原始分配範圍為 10.0.10.0/24,則新的分配範圍至少要為 10.0.10.0/23。

一般來說,如果從 /24 分配開始,每項條件 (額外執行個體類型群組、額外區域) 將 /mask 遞減 1,是個不錯的經驗法則。舉例來說,如果嘗試在相同配置中建立兩個執行個體類型群組,從 /24 變更為 /23 就足夠。

擴充現有 IP 範圍後,請使用下列指令更新 VPC 對等互連:

gcloud services vpc-peerings update \
--service=servicenetworking.googleapis.com \
--ranges=RESERVED_RANGE_NAME \
--network=VPC_NETWORK \
--project=PROJECT_ID
    
錯誤訊息: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 角色」。
CSV 匯出作業成功,但 SQL 匯出作業失敗。 CSV 和 SQL 格式的匯出方式不同。SQL 格式會匯出整個資料庫,因此可能需要較長時間才能完成。CSV 格式可讓您定義要匯出資料庫中的哪些元素。

使用 CSV 匯出功能,只匯出所需資料。

匯出時間過長。 Cloud SQL 不支援並行同步作業。

使用 匯出卸載。從高層次來看,在卸載匯出作業時,Cloud SQL 會啟動卸載執行個體來執行匯出作業,而不是在來源執行個體上發出匯出作業。卸載匯出作業有幾項優點,包括提升來源執行個體的效能,以及在匯出作業執行期間解除管理作業的封鎖。使用匯出卸載功能時,總延遲時間可能會增加,增加的時間量取決於啟動卸載執行個體所需的時間。一般來說,只要匯出檔案大小合理,延遲時間就不會太長。不過,如果匯出內容夠小,延遲時間可能會增加。

您希望系統自動匯出資料。 Cloud SQL 不提供自動匯出功能。

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

外部主要

問題 疑難排解
Lost connection to MySQL server during query when dumping table 來源可能已無法使用,或傾印包含的封包過大。

確認外部主要伺服器可供連線。 您也可以修改來源執行個體上的 net_read_timeoutnet_write_timeout 旗標值,停止發生錯誤。如要進一步瞭解這些旗標的允許值,請參閱「設定資料庫旗標」。

如要進一步瞭解如何使用 mysqldump 標記進行受管理匯入遷移作業,請參閱「 允許和預設的初始同步標記」。

初始資料遷移作業成功,但沒有任何資料複製。 其中一個可能的原因是來源資料庫定義了複製標記,導致部分或所有資料庫變更未複製過來。

請確認複製旗標 (例如 binlog-do-dbbinlog-ignore-dbreplicate-do-dbreplicate-ignore-db) 未以衝突的方式設定。

在主要執行個體上執行 show master status 指令,即可查看目前的設定。

初始資料遷移作業成功,但資料複製作業在一段時間後停止運作。 建議做法:

  • 在 Google Cloud 控制台的 Cloud Monitoring 專區中,查看副本執行個體的 複寫指標
  • MySQL IO 執行緒或 SQL 執行緒的錯誤會顯示在 Cloud Loggingmysql.err log 檔案中。
  • 連線至副本執行個體時,也可能會發現這個錯誤。 執行 SHOW SLAVE STATUS 指令,並檢查輸出內容中是否有下列欄位:
    • Slave_IO_Running
    • Slave_SQL_Running
    • Last_IO_Error
    • Last_SQL_Error
mysqld check failed: data disk is full 備用執行個體的資料磁碟已滿。

增加副本執行個體的磁碟大小。您可以手動增加磁碟大小,也可以啟用儲存空間自動增加功能。

外部副本

問題 疑難排解
錯誤訊息:The slave is connecting ... master has purged binary logs containing GTIDs that the slave requires 主要 Cloud SQL 執行個體已啟用自動備份、二進位記錄檔和時間點復原功能,因此應該有足夠的記錄檔,可供副本趕上進度。不過,在這種情況下,雖然二進位記錄檔存在,但副本不知道要從哪一列開始讀取。

使用正確的旗標設定建立新的傾印檔案,並使用該檔案設定外部副本

  1. 透過 Compute Engine 執行個體連線至 mysql 用戶端。
  2. 執行 mysqldump,並使用 --master-data=1--flush-privileges 標記。

    重要事項:請勿加入 --set-gtid-purged=OFF 旗標

    瞭解詳情

  3. 確認剛建立的傾印檔案包含 SET @@GLOBAL.GTID_PURGED='...' 行。
  4. 將傾印檔案上傳至 Cloud Storage 值區,然後 使用傾印檔案設定副本

旗標

問題 疑難排解
啟用旗標後,執行個體會在恐慌和當機之間循環。 請與 客戶服務團隊聯絡,要求移除標記,然後hard drain。這會強制執行個體在其他主機上重新啟動,並使用新的設定,且不含不想要的旗標或設定。
嘗試設定旗標時,系統顯示 Bad syntax for dict arg 錯誤訊息。 複雜的參數值 (例如以半形逗號分隔的清單) 與 gcloud 指令搭配使用時,需要特別處理。

高可用性

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

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

匯入

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

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

重新啟動:

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

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

匯入作業失敗,並顯示資料表不存在的錯誤。 資料表可能會參照其他資料表的外鍵,而且其中一或多個資料表在匯入作業期間可能仍不存在 (取決於匯入順序)。

建議做法:

在傾印檔案開頭加上以下這一行:

SET FOREIGN_KEY_CHECKS=0;
  

此外,請在傾印檔案結尾處加上以下這一行:

SET FOREIGN_KEY_CHECKS=1;
  

這些設定會在匯入作業進行期間停用資料完整性檢查,並在資料載入後重新啟用。這不會影響資料庫中的資料完整性,因為資料在建立傾印檔案時已通過驗證。

記錄

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

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

記錄檔占用大量磁碟空間。 有三種記錄檔會使用磁碟空間:重做記錄、一般記錄和二進位記錄。

連線至資料庫,並執行下列指令,查看各類型的詳細資料:

SHOW VARIABLES LIKE 'innodb_log_file%';

SELECT ROUND(SUM(LENGTH(argument)/POW(1024,2),2)
AS GB from mysql.general_log;

SHOW BINARY LOGS;
    
記錄檔難以解讀。 您希望以 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
   

管理執行個體

問題 疑難排解
重新啟動 MySQL 後效能變慢。 Cloud SQL 允許在 InnoDB 緩衝區集區中快取資料。 不過,重新啟動後,這個快取一律會是空的,所有讀取作業都需要往返後端才能取得資料。因此,在填滿快取之前,查詢速度可能會比預期慢。
當機復原速度緩慢。 可能已累積大量 general_log。 您可以避免大量 general_log 累積,藉此縮短當機復原時間。如果已開啟 general_log,請截斷資料表,並只在短時間內啟用 general_log

如要瞭解一般記錄的大小,請連線至資料庫並執行下列查詢:

SELECT ROUND(SUM(LENGTH(argument)/POW(1024,2)),2) from mysql.general_log;
您想瞭解哪些項目占用了儲存空間。 舉例來說,您發現資料庫只用了 3 GB,但儲存空間顯示已使用 14 GB。資料表未使用的空間大多會用於二進位記錄和/或暫存檔案。

建議做法:

  • 您可以在 MySQL 指令列介面中,使用下列指令檢查二進位記錄檔占用的儲存空間: SHOW BINARY LOGS;
  • 臨時表也可能佔用大量儲存空間。如要查看暫時空間用量,請使用下列指令: SELECT * FROM INFORMATION_SCHEMA.FILES WHERE TABLESPACE_NAME='innodb_temporary'\G
  • 您可以使用下列指令檢查重做記錄大小: SHOW VARIABLES LIKE 'innodb_log_file%';
  • 如要檢查 general_log 的大小 (如果已啟用),請使用下列指令: SELECT ROUND(SUM(LENGTH(argument)/POW(1024,2)),2) AS GB from mysql.general_log;
  • 如有需要,您可以使用 API 截斷記錄檔表格。詳情請參閱instances.truncateLog 參考資料頁面
  • 進一步瞭解如何設定 設定慢速查詢記錄。
查詢遭到封鎖。 查詢可能會鎖定 MySQL 資料庫,導致後續所有查詢遭到封鎖/逾時。

連線至資料庫並執行這項查詢:

SHOW PROCESSLIST

清單中的第一個項目可能持有鎖定,後續項目則會等待該項目釋放鎖定。

SHOW INNODB STATUS查詢也可能有所幫助。

您無法手動刪除二進位檔記錄。 二進位記錄無法手動刪除。二進位記錄檔會連同相關聯的自動備份檔一併自動刪除,通常會在約七天後刪除。
想瞭解暫存檔案。 名為 ibtmp1 的檔案用於儲存暫存資料。資料庫重新啟動時,系統會重設這個檔案。如要瞭解暫存檔案用量,請連線至資料庫並執行下列查詢:

SELECT * FROM INFORMATION_SCHEMA.FILES WHERE TABLESPACE_NAME='innodb_temporary'\G

您想瞭解資料表大小。 這項資訊會顯示在資料庫中。

連線至資料庫並執行下列查詢:

SELECT TABLE_SCHEMA, TABLE_NAME, sum(DATA_LENGTH+INDEX_LENGTH)/pow(1024,2) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA NOT IN ('PERFORMANCE_SCHEMA','INFORMATION_SCHEMA','SYS','MYSQL') GROUP BY TABLE_SCHEMA, TABLE_NAME;

mysqld got a signal 11. 請嘗試重構查詢,避免建立過多連線。如果仍無法解決問題,請與客戶服務團隊聯絡。 訊號 11 通常代表 MySQL 軟體問題。

InnoDB: page_cleaner: 1000ms intended loop took 5215ms. The settings might not be optimal. 頁面清除器無法跟上執行個體上的變更率。 頁面清除器每秒會掃描緩衝區集區中的髒頁,並從緩衝區集區排清至磁碟。您看到的警告顯示有大量待清除的髒頁面,且清除一批頁面到磁碟的時間超過一秒。

對執行個體執行資料分割 (如有可能)。請盡量使用多個小型 Cloud SQL 執行個體,效果會比使用單個大型的執行個體更好。

臨時儲存空間會自動增加儲存空間。 已啟用自動儲存功能。

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

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

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

無法刪除執行個體。 您可能會看到 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 秒,就能避免大多數不乾淨的關機,包括來自資料庫命令提示字元的連線。如果長時間 (數小時或數天) 開啟這些連線,關機時可能會發生不乾淨的關機程序。

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

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

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

請特別參閱 一般效能提示

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

  • 啟用 long_query_time 標記後,您就能檢查記錄檔中的慢速查詢。前往專案的「Logs Explorer」頁面,然後執行類似下列的查詢:
    resource.type="cloudsql_database"
    resource.labels.database_id="INSTANCE-ID"
    log_name="projects/PROJECT-ID/logs/cloudsql.googleapis.com%2Fmysql-slow.log"
          

    您可以 下載 JSON 或 TEXT 格式的記錄,在本機處理。

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

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

系統指出記憶體不足,但監控圖表並未顯示此情況。 執行個體可能會失敗並回報 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 這類查詢會造成複寫延遲,因為複本上會累積大量更新。

可能的解決方法包括:

複製延遲時間突然大幅增加。 這是因為交易執行時間過長所致。當交易 (單一陳述式或多個陳述式) 在來源執行個體上提交時,交易的開始時間會記錄在二進位記錄檔中。副本收到這個 binlog 事件時,會比較該時間戳記與目前的時間戳記,以計算複寫延遲。因此,來源上長時間執行的交易會導致副本立即出現大量複製延遲。如果交易中的資料列變更量很大,副本也會花費很長時間執行。這段時間內,複製延遲會增加。副本完成這項交易後,追趕期會視來源的寫入工作負載和副本的處理速度而定。

如要避免交易時間過長,可以嘗試以下解決方法:

  • 將交易拆分成多筆小額交易
  • 將單一大型寫入查詢分成較小的批次
  • 嘗試將包含 DML 的交易中冗長的 SELECT 查詢分開
變更平行複製旗標會導致錯誤。 一或多個標記的值不正確。

在顯示錯誤訊息的主要執行個體上,設定平行複製標記:

  1. 修改 binlog_transaction_dependency_trackingtransaction_write_set_extraction 標記:
    • binlog_transaction_dependency_tracking=COMMIT_ORDER
    • transaction_write_set_extraction=OFF
  2. 新增 slave_pending_jobs_size_max 旗標:

    slave_pending_jobs_size_max=33554432

  3. 修改 transaction_write_set_extraction 旗標:

    transaction_write_set_extraction=XXHASH64

  4. 修改 binlog_transaction_dependency_tracking 旗標:

    binlog_transaction_dependency_tracking=WRITESET

建立副本時發生逾時錯誤。 主要執行個體上未提交的長期交易可能會導致唯讀備用資源建立失敗。

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