本頁列出使用 Cloud SQL 執行個體時最常遇到的問題,以及解決這些問題的步驟。另請參閱已知問題、疑難排解和支援頁面。
查看記錄
如要查看近期作業的相關資訊,可以查看 Cloud SQL 執行個體作業記錄或 MySQL 錯誤記錄。
執行個體沒有回應
如果執行個體停止回應連線或效能降低,請確定其符合操作指南。如果不符合這些規範,則不適用 Cloud SQL 服務水準協議。
連線問題
如需連線問題的相關協助,請參閱「偵錯連線問題」頁面或疑難排解頁面的「 連線能力」一節。
執行個體問題
備份
為確保備份作業發揮最佳效能,請將資料表數量控制在合理範圍內。
如需其他備份問題的相關資訊,請參閱疑難排解頁面的「 備份」一節。
匯入及匯出
Cloud SQL 的匯入和匯出功能與 mysqldump 公用程式相同,但 Cloud SQL 匯入/匯出功能是使用 Cloud Storage bucket 移轉資料。
視處理的資料量而定,匯入 Cloud SQL 和從 Cloud SQL 匯出可能需要很長時間才能完成。這可能會有下列影響:
- 您無法停止長時間執行的 Cloud SQL 執行個體作業。
- 每個執行個體一次只能執行一項匯入或匯出作業,且長時間執行的匯入或匯出作業會阻擋其他作業,例如每日自動備份。無伺服器匯出功能可讓您執行其他作業,包括編輯執行個體、匯入、容錯移轉,以及解除每日自動備份作業的封鎖。
如要縮短每項作業的完成時間,可以使用 Cloud SQL 匯入或匯出功能,分批處理較少量的資料。
如要匯出資料,您可以從唯讀副本匯出,或使用無伺服器匯出功能,盡可能降低對資料庫效能的影響,並在匯出期間允許其他作業在執行個體上執行。
匯入時應記住的其他重點:
- 如果匯入作業當機,可能是因為記憶體不足 (OOM) 錯誤。如果是這種情況,您可以嘗試直接使用 MySQL 指令新增
--extended-insert=FALSE --complete-insert參數。這些參數會降低匯入速度,但也會減少匯入所需的記憶體量。
如需其他匯入和匯出問題的相關資訊,請參閱疑難排解頁面的「 匯入和匯出」一節。
磁碟空間
如果執行個體達到儲存空間上限,就無法寫入資料庫。如果您透過例如捨棄表格的方式刪除資料,釋放的空間不會在執行個體的已報告「Storage Used」(已使用的儲存空間) 中反映出來。如需這項行為的說明,請參閱常見問題「如何回收已捨棄資料表的空間?」。達到儲存空間上限也可能導致執行個體卡在重新啟動狀態。
避免資料損毀
避免產生的資料欄
由於 MySQL 的問題,使用產生的資料欄可能會導致資料毀損。詳情請參閱 MySQL 錯誤編號 82736 一文。
乾淨關機
Cloud SQL 關閉執行個體時 (例如進行維護),不會將任何新連線傳送至執行個體,現有連線也會終止。mysqld 必要的關機時間量限制為 1 分鐘。 如果關閉程序未在這段時間內完成,mysqld 程序會強制停止。這可能會導致半途取消磁碟寫入。
資料庫引擎
InnoDB 是 MySQL 執行個體唯一支援的儲存引擎,因為它比其他 MySQL 儲存引擎 (例如 MyISAM) 更能防止資料表損毀。
根據預設,Cloud SQL 資料庫表格使用 InnoDB 儲存引擎建立。如果 CREATE TABLE 語法包含 ENGINE 選項,指定 InnoDB 以外的儲存引擎 (例如 ENGINE = MyISAM),系統就不會建立資料表,並會顯示類似下列範例的錯誤訊息:
ERROR 3161 (HY000): Storage engine MyISAM is disabled (Table creation is disallowed).
只要從 CREATE TABLE 指令中移除 ENGINE = MyISAM 選項,即可避免這項錯誤。這樣就會使用 InnoDB 儲存引擎建立資料表。
變更系統表格
MySQL 系統資料表使用 MyISAM 儲存引擎,包括 mysql 資料庫中的所有資料表,例如 mysql.user 和 mysql.db。這些資料表容易受到不正常關機的影響;變更這些資料表後,請發出 FLUSH CHANGES 指令。如果 MyISAM 確實損毀,CHECK TABLE 和 REPAIR TABLE 可讓您回到良好狀態 (但不會儲存資料)。
通用交易識別碼 (GTID)
所有 MySQL 執行個體都會自動啟用 GTID。啟用 GTID 可防止在建立副本和容錯移轉期間遺失資料,並提高複製作業的穩定性。不過,GTID 受到 MySQL 施加的一些限制,詳情請參閱 MySQL 手冊。下列交易不安全作業無法與啟用 GTID 的 MySQL 伺服器搭配使用:
CREATE TABLE ... SELECT個陳述式;- 交易中的
CREATE TEMPORARY TABLE陳述式 - 會同時影響到交易型與非交易型表格的交易或陳述式。
如果您使用交易不安全的交易,會看到類似以下範例的錯誤訊息:
Exception: SQLSTATE[HY000]: General error: 1786
CREATE TABLE ... SELECT is forbidden when @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1.
使用觸發條件和儲存的函式
如果執行個體已啟用二進位記錄,且您需要使用觸發條件或儲存函式,請確認執行個體的 log_bin_trust_function_creators 旗標設為 on。
停權狀態
Cloud SQL 可能會因多種原因而停用執行個體,包括:
帳單問題
例如,如果專案帳單帳戶的信用卡已過期,則執行個體可能會遭到暫停。如要查看專案的帳單資訊,請前往 Cloud de Confiance 控制台帳單頁面,選取專案,然後查看專案使用的帳單帳戶資訊。解決帳單問題後,執行個體會在幾小時內恢復可執行狀態。
Cloud Key Management Service 的主要問題
舉例來說,如果 Cloud SQL 執行個體中用於加密使用者資料的 Cloud KMS 金鑰版本不存在、金鑰存取權遭到撤銷,或者金鑰在多次重試後仍停用、刪除或無法連線數小時,就會發生這種情況。詳情請參閱「使用客戶自行管理的加密金鑰 (CMEK)」。
法律問題
例如,違反 Cloud de Confiance 《使用限制政策》可能會導致執行個體遭到停權。詳情請參閱《Cloud de Confiance 服務條款》的「停權和移除」一節。
操作問題
舉例來說,如果執行個體卡在當機迴圈 (在啟動時或啟動後當機),Cloud SQL 可能會暫停執行個體。
執行個體暫停運作期間,您還是可以查看相關資訊。如果暫停運作的原因是帳單問題,您也可以刪除執行個體。
白金級、爍金級或白銀級支援方案的 Cloud SQL 使用者,可就暫停的執行個體直接與支援小組聯絡。所有使用者都可以參考上述指南,並使用 google-cloud-sql 論壇。
效能
總覽
Cloud SQL 支援耗用大量效能的工作負載,IOPS 最高可達 60,000 次,而且不會產生額外的輸入/輸出作業費用。IOPS 和處理量效能取決於磁碟大小、執行個體 vCPU 數量和 I/O 區塊大小等因素。
執行個體的效能也取決於所選的儲存空間類型和工作負載。
進一步瞭解:
啟用查詢記錄
如要調整查詢效能,您可以新增資料庫旗標
--log_output='FILE' 和 --slow_query_log=on 至執行個體,設定 Cloud SQL 記錄執行速度緩慢的查詢。這樣一來,您就能使用 Cloud de Confiance 控制台中的記錄檢視器查看記錄輸出內容。請注意,您必須支付 Google Cloud Observability 記錄費用。
請勿將 log_output 設為 TABLE。否則可能會導致連線問題,詳情請參閱「使用旗標的提示」。
如需使用 Cloud Logging 和 Monitoring 記錄及監控 MySQL 適用的 Cloud SQL 慢速查詢的操作說明,請參閱這個教學課程。
啟用鎖定監控
InnoDB 監視器提供有關 InnoDB 儲存引擎內部狀態的資訊,您可以在效能調整時使用這些資訊。
使用 MySQL 用戶端存取執行個體並取得隨選監控輸出:
SHOW ENGINE INNODB STATUS\G
如需監控輸出區段的說明,請參閱 InnoDB 標準監視器與鎖定監控輸出。
您可以啟用 InnoDB 監視器,以將效能降低的輸出定期產生到檔案或表格中。如需詳細資訊,請參閱啟用 InnoDB 監視器。
使用效能結構定義
MySQL 效能結構定義是一項功能,可從低階層監控 MySQL 伺服器執行作業。如要查看 performance_schema 產生的統計資料,最簡單的方法是使用 MySQL Workbench 成效報表功能。
保持合理的資料庫表格數目
資料庫表格會耗用系統資源。如果數量過多,可能會影響執行個體的效能和可用性,導致執行個體不適用服務水準協議。瞭解詳情。
一般效能提示
. 如果資料庫插入、更新或刪除作業速度緩慢,請考慮採取下列行動:- 請檢查寫入者與資料庫的位置;將資料傳送很遠的距離會導致延遲發生。
針對較慢的資料庫選取作業,請考慮下列因素:
- 快取對讀取效能至關重要。比較資料集大小與執行個體的 RAM 大小。理想情況下,整個資料集應不超過執行個體 RAM 的 70%,這樣查詢就不會受限於 IO 效能。如果不是,請考慮增加執行個體的 RAM 大小。
- 如果工作負載包含大量 CPU 密集查詢 (排序、規則運算式、其他複雜函式),執行個體可能會受到限制,請增加 vCPU。
如果執行查詢時效能不佳,請使用 EXPLAIN。EXPLAIN 是可新增至其他陳述式 (例如 SELECT) 的陳述式,會傳回 MySQL 執行陳述式的相關資訊。適用於 SELECT、DELETE、INSERT、REPLACE 和 UPDATE。例如:EXPLAIN SELECT * FROM myTable;。
使用 EXPLAIN 找出可採取下列行動的機會:
將索引新增至表格以改善查詢效能。例如,確保您做為彙整鍵使用的每個欄位,在兩個資料表上都有索引。
改善
ORDER BY作業。如果EXPLAIN在輸出內容的「Extra」欄中顯示「Using temporary; Using filesort」,則表示中繼結果會儲存在檔案中,然後再進行排序,這通常會導致效能不佳。在此情況下,請採取以下其中一個步驟:如果可行,請使用索引而不要使用排序。如需詳細資訊,請參閱 ORDER BY 最佳化。
增加查詢工作階段的
sort_buffer_size變數大小。只將資料欄宣告為剛好需要的大小,使每個資料列能夠使用較少的 RAM。
疑難排解
如需其他 Cloud SQL 問題的相關資訊,請參閱 疑難排解頁面。
錯誤訊息
如需特定 API 錯誤訊息,請參閱錯誤訊息參考頁面。
排解客戶自行管理的加密金鑰 (CMEK) 問題
Cloud SQL 系統管理員作業 (例如建立、複製或更新) 可能會因 Cloud KMS 錯誤、缺少角色或權限而失敗。常見的失敗原因包括:缺少 Cloud KMS 金鑰版本、Cloud KMS 金鑰版本已停用或刪除、IAM 權限不足,無法存取 Cloud KMS 金鑰版本,或 Cloud KMS 金鑰版本與 Cloud SQL 執行個體位於不同區域。請參閱下方的疑難排解表格,診斷及解決常見問題。
客戶自行管理的加密金鑰疑難排解表格
| 如果發生這項錯誤... | 問題可能出在... | 不如說 |
|---|---|---|
| 找不到各項產品和專案的服務帳戶 | 服務帳戶名稱不正確。 | 請確認您為正確的使用者專案建立了服務帳戶。
|
| 無法將存取權授予服務帳戶 | 使用者帳戶沒有權限,無法授予這個金鑰版本的存取權。 | 將組織管理員角色新增至使用者或服務帳戶。 |
| Cloud KMS 金鑰版本已刪除 | 金鑰版本已刪除。 | 如果金鑰版本已刪除,就無法用來加密或解密資料。 |
| Cloud KMS 金鑰版本已停用 | 金鑰版本已停用。 | 重新啟用 Cloud KMS 金鑰版本。
|
| 權限不足,無法使用 Cloud KMS 金鑰 | 您用來在 Cloud SQL 執行個體上執行作業的使用者或服務帳戶缺少 cloudkms.cryptoKeyEncrypterDecrypter 角色,或 Cloud KMS 金鑰版本不存在。 |
在託管金鑰的 Cloud de Confiance 專案中,將cloudkms.cryptoKeyEncrypterDecrypter角色新增至使用者或服務帳戶。如果您的帳戶已具備該角色,請參閱建立金鑰,瞭解如何建立新的金鑰版本。請參閱附註。 |
| 找不到 Cloud KMS 金鑰 | 金鑰版本不存在。 | 建立新的金鑰版本。請參閱「建立金鑰」。 請參閱附註。 |
| 無法連上 EKM 金鑰 | 無法連上外部金鑰管理工具 (EKM) 金鑰,即使多次重試,仍無法連上 EKM 金鑰。 如果執行個體因金鑰無法使用而遭到停權,但金鑰在 Cloud de Confiance 控制台中顯示為有效且可用,則問題可能出在 EKM 連線或驗證。 |
請驗證 EKM 連線狀態,並與 EKM 供應商合作排解問題。
|
| Cloud SQL 執行個體和 Cloud KMS 金鑰版本位於不同區域 | Cloud KMS 金鑰版本和 Cloud SQL 執行個體必須位於相同區域。如果 Cloud KMS 金鑰版本位於全域區域或多區域,則不適用。 | 在要建立執行個體的區域中,建立金鑰版本。請參閱「建立金鑰」。請參閱附註。 |
| Cloud KMS 金鑰版本已還原,但執行個體在幾分鐘後仍處於停權狀態。 | 執行個體的內部驗證程序最多可能需要 10 分鐘,執行個體才會再次可用。 | 等待 10 分鐘,讓執行個體可供使用。 |
| Cloud KMS 金鑰版本已還原,但執行個體在 10 分鐘後仍處於停權狀態。 | 金鑰版本已停用或未授予適當權限。 | 重新啟用金鑰版本,並在託管金鑰的 Cloud de Confiance 專案中,將cloudkms.cryptoKeyEncrypterDecrypter角色授予使用者或服務帳戶。 |
重新加密疑難排解表格
| 如果發生這項錯誤... | 問題可能出在... | 不如說 |
|---|---|---|
| 無法存取 Cloud KMS 金鑰,因此無法重新加密 CMEK 資源。請確認主要金鑰版本已啟用,且已正確授予權限。 | 金鑰版本已停用或未授予適當權限。 | 重新啟用 Cloud KMS 金鑰版本: 在託管金鑰的 Cloud de Confiance 專案中,確認您的使用者或服務帳戶已獲派 |
| 伺服器發生內部錯誤,因此無法重新加密 CMEK 資源。請稍後再試 | 伺服器發生內部錯誤。 | 請重新加密。詳情請參閱「重新加密已啟用 CMEK 的現有執行個體或副本」 |