MySQL 適用的 Cloud SQL 常見問題

簡介

什麼是 Cloud SQL?
Cloud SQL 是一項服務,可在雲端提供全代管的 SQL 資料庫。 Cloud SQL 提供 PostgreSQL、SQL Server 和 MySQL 資料庫。
使用 Cloud SQL 有什麼好處?
您可以把枯燥但必要,且通常相當耗時的工作轉由 Google 執行,例如套用修補與更新檔、管理備份與設定複寫作業,這樣您就能專心打造出色的應用程式。由於我們使用標準線路通訊協定,因此您幾乎可以從任何應用程式連線,不受地點限制。
哪些資料庫版本可以搭配 Cloud SQL 使用?如何管理更新?

MySQL 適用的 Cloud SQL 支援 MySQL 8.4、8.0 (預設)、5.7 和 5.6。

次要版本更新會在排定的維護作業中部署,您不需要另外採取任何動作。如要進一步瞭解更新,請參閱「Cloud SQL 執行個體的維護作業總覽」。

如要查看執行個體的目前版本,請前往Trusted Cloud 主控台,按一下執行個體名稱,以開啟「Instance details」(執行個體詳細資料) 頁面。或者,您可以使用 gcloud sql instances describe 指令。

Cloud SQL 是否支援所有資料庫功能?
Cloud SQL 支援 MySQL 最常見的功能。如要查看標準 MySQL 與 Cloud SQL 功能的所有差異,請參閱「Cloud SQL 與標準 MySQL 功能之間的差異」。
是否有任何大小或 QPS 限制?
Cloud SQL 執行個體沒有每秒查詢次數 (QPS) 限制。如需進一步瞭解連線、大小及 App Engine 專用限制,請參閱配額與限制一文。
我要如何得知 Cloud SQL 的任何變動?
您可以訂閱 google-cloud-sql-announce 論壇,接收 Cloud SQL 的公告和最新消息。
如何回報錯誤、要求新功能或詢問問題?
您可以在 google-cloud-sql-discuss 群組中回報錯誤並要求新功能。您可以在 Stack Overflow 上提問。如需其他支援選項,請參閱 Cloud SQL 支援頁面。
返回頁首

開始使用

什麼 MySQL 工具最適合用來管理執行個體?
Cloud SQL 提供多種 MySQL 工具。如要執行個別陳述式,可以使用 MySQL 指令列工具。如果要執行較複雜的工作,或使用功能更豐富的資料庫開發環境,可以嘗試使用 Toad for MySQL MySQL Workbench。詳情請參閱「管理和報表工具」。
我使用哪一個儲存空間引擎?
以 MySQL 執行個體來說,InnoDB 是唯一支援的儲存引擎。

如果 mysqldump 檔案中的所有資料表都採用 MyISAM 格式,您可以將該檔案導入 sed 指令碼管線,以將這些資料表轉換成 InnoDB 格式:

mysqldump --databases [DATABASE_NAME] \
-h [INSTANCE_IP] -u [USERNAME] -p [PASSWORD] \
--hex-blob --default-character-set=utf8mb4 | sed 's/ENGINE=MyISAM/ENGINE=InnoDB/g' > [DATABASE_FILE].sql

警告:如果 mysqldump 檔案含有 mysql 結構定義,請勿執行這段指令碼。這些檔案必須保留在 MyISAM 中。

為什麼我的新執行個體沒有資料顯示已使用的磁碟空間?
建立執行個體時,Cloud SQL 和資料庫都會使用部分空間儲存系統檔案和中繼資料。
返回頁首

資料儲存、複製和驗證

我的資料儲存在哪裡?

執行個體資料會儲存在該執行個體所在的地區。 如果您未指定儲存位置,備份會儲存在地理位置上最接近 Cloud SQL 執行個體位置的多地區中。舉例來說,如果您的 Cloud SQL 執行個體位於 us-central1,系統預設會將備份儲存在 us 多區域。不過,諸如 australia-southeast1 等預設位置不在多地區範圍內。最近的多地區為 asia

什麼是區域?

區域是特定地理位置中的獨立實體,您可在其中執行資源。舉例來說,名為 us-central1-a 的可用區表示位於美國中部。

如要為 MySQL 執行個體提供跨可用區的容錯能力,請將執行個體設定為高可用性。強烈建議所有生產用途執行個體均設定高可用性。

如要進一步瞭解區域,請參閱 Compute Engine 說明文件中的「區域資源」一文。

什麼是儲存空間限制?
如需進一步瞭解儲存空間限制,請參閱 「配額與限制」一文。
我的資料是如何複製的?

MySQL 執行個體: MySQL 執行個體提供高可用性設定和 MySQL 唯讀備用資源。MySQL 唯讀備用資源使用非同步複製

我可以建立哪一種讀取備用資源?

如要進一步瞭解唯讀備用資源,包括每種資源的用途,請參閱「複製選項」。

Cloud SQL 容錯移轉的運作方式為何?

如要瞭解容錯移轉,請參閱高可用性設定總覽

我的資料有經過加密嗎?
無論是儲存在資料庫資料表、暫存檔案和備份中,Cloud SQL 客戶資料皆處於加密狀態。您可以使用安全資料傳輸層 (SSL) 或使用 Cloud SQL 驗證 Proxy 來加密外部連線。
如何管理靜態資料加密?

您的資料會依照 256 位元進階加密標準 (AES-256) 加密,或以更好的對稱金鑰加密:亦即,儲存資料時會使用金鑰加密,使用資料時再使用相同的金鑰解密。這些資料金鑰本身會使用儲存在安全金鑰儲存區的金鑰加密,並定期變更。

詳情請參閱 Google Cloud 靜態資料加密一文。

如何管理傳輸中的資料加密?

資料移出 Google 或 Google 代理單位控管的實體界限時,Google 會在一或多個網路層加密及驗證所有傳輸中的資料。系統通常會驗證在 Google 控制或代表 Google 控制的實體界限內傳輸的資料,但不會預設為加密這些資料。如果使用執行個體的公開 IP 位址連線至執行個體,請使用 SSL/TLS 憑證,確保資料在傳輸過程中安全無虞。您可以依據您的威脅模型,選擇要套用哪些額外的安全措施。舉例來說,您可以設定 SSL,確保連線至 Cloud SQL 的區域內連線安全無虞。

詳情請參閱「Google Cloud 中的傳輸加密」。

如何分辨執行個體是否為唯讀備用資源?
您可以使用 Trusted Cloud 控制台查看所有 Cloud SQL 執行個體,以及執行個體是主要執行個體還是唯讀備用資源執行個體。您也可以使用 gcloud CLI 檢查執行個體是主要執行個體還是唯讀副本。詳情請參閱「檢查複製狀態」。
Cloud SQL 是否提供讀取備用資源要求的負載平衡?
Cloud SQL 不會自動提供或設定負載平衡。您可以透過連線集區,在多個連線端點之間切換,將讀取要求分散到唯讀副本。
返回頁首

備份與還原

如何復原執行個體?

如要還原備份,您可以使用 Trusted Cloud 主控台gcloud指令列工具。詳情請參閱「還原執行個體」。

如要將執行個體還原至特定時間點,請使用時間點復原功能。 詳情請參閱「 使用時間點復原」一節。

備份的費用是多少?

備份費用會以執行個體儲存空間費率計算。

如需進一步瞭解執行個體儲存空間價格和執行個體費率,請參閱定價一文。

我可以存取超過七天的自動備份嗎?

系統每天都會自動備份,預設保留期限為七天。您可以設定備份保留值,範圍為 1 到 365 個備份。保留期限結束時,系統會刪除最舊的備份。自動備份是漸進式備份,只包含上次備份後變更的資料。最舊的備份大小與資料庫大小相近。刪除最舊的備份後,下一個最舊的備份大小會增加,確保仍有完整備份。

請注意,隨選備份不會刪除,直到您手動移除為止。

時間點復原會對效能造成什麼影響?
如果是 MySQL 適用的 Cloud SQL,您必須啟用二進位檔記錄,才能使用時間點復原功能。這表示資料庫的每一筆更新都會寫入獨立的記錄檔,而這會造成寫入效能略為降低。無論二進位記錄檔的大小為何,讀取作業的效能一律不受二進位檔記錄的影響。
為保護區域免於故障,我該使用外部複製還是跨區域複製?
外部複製 跨區域複製
由客戶自行管理 Cloud SQL 代管跨區域備用資源
可在非 Google Cloud 和 Google Cloud 執行個體之間複製 只能在 Cloud SQL 執行個體之間複製
遷移至/從 Google Cloud 遷移,盡量減少停機時間,或進行混合/多雲資料保護 在 Google Cloud 區域之間遷移資料,盡量減少停機時間
支援跨主要版本複寫 不支援跨主要版本複製
返回頁首

管理執行個體

哪些動作可能會導致 Cloud SQL 執行個體重新啟動?
當您或 Cloud SQL 採取下列動作時,Cloud SQL 執行個體可能會重新啟動:
  • 更新
  • 建立
  • 升級備用資源
  • 維護
  • 重新建立複本
  • 容錯移轉
  • 重新啟動
  • 從備份還原執行個體
  • 在現有執行個體上啟用高可用性 (這是執行個體的更新)
  • 新增需要重新啟動的資料庫旗標

重新啟動執行個體不會變更執行個體的公開或私人 IP 位址。

請參閱下節: 執行個體在重新啟動期間會關閉多久?

重新啟動期間,執行個體會關閉多久?

重新啟動執行個體時,大多數執行個體會關閉一到兩分鐘。執行個體關閉前,系統會終止所有連線,並將目前的工作從磁碟清除。

如果執行個體負載量大,這個程序會耗費較長時間,執行個體可能看似停滯。在這些情況下,執行個體可能需要最多一小時才能關閉並重新啟動。執行個體關機和重新啟動時間過長的原因包括使用者有許多寫入交易,或是交易執行時間過長。

可以擴大或縮小我的資料庫嗎?

MySQL 執行個體:您可以隨時增加執行個體的可用儲存空間,不會造成停機。您無法縮減執行個體儲存空間的大小。

您也可以將執行個體設為在空間不足時自動增加儲存空間容量。瞭解詳情

我可以升級和降級 vCPU 嗎?

可以。您可以變更執行個體使用的 vCPU 數量。您可以視需要多次增加或減少使用的核心數量。變更 vCPU 數量通常只需要不到五分鐘的停機時間。如果您要增加Cloud SQL Enterprise Plus 版本主要執行個體的 vCPU 數量,變更會生效,且幾乎無須停機。

必須使用 Trusted Cloud 控制台來管理 Cloud SQL 嗎?
不需要。凡是能在主控台執行的管理工作,都可以透過 Cloud SQL Admin API 運用程式來執行,或使用 gcloud 指令列工具撰寫指令碼來執行。
如何收回已捨棄的資料表所佔用的空間?
在資料庫中捨棄資料表後檢查 Trusted Cloud 主控台時,您可能會發現捨棄資料表所釋出的空間並未反映在執行個體「Storage Used」(已使用的儲存空間) 報告中。執行 MySQL 5.5 的執行個體預設會將 innodb_file_per_table 標記設為 OFF,InnoDB 在任何情況下都不會縮減預設資料表空間。針對這種配置,如要取回空間,請在較小的資料庫中建立新的執行個體,或將 innodb_file_per_table 標記的值變更為 ON。如要瞭解如何變更資料庫標記,請參閱「設定資料庫標記」。
如何回收暫存檔占用的空間?
如果 SQL 查詢建立許多臨時資料表,暫存檔案可能會變大。如要回收臨時資料表使用的空間,請重新啟動資料庫。 請注意,重新啟動資料庫不會減少因暫存檔案成長而佈建的磁碟空間。
我可以手動從執行個體清除二進位記錄檔嗎?
二進位記錄檔會占用儲存空間。二進位記錄檔會連同相關聯的自動備份檔一併刪除,這通常會在七天後發生。您無法手動刪除二進位記錄檔。

如果二進位記錄檔的大小導致執行個體發生問題,可以增加儲存空間大小。您也可以停用二進位檔記錄,然後重新啟用,這樣就會刪除二進位檔記錄。但請注意,這麼做不會縮減為執行個體佈建的儲存空間大小。

我可以設定自訂二進位記錄保留政策嗎?
系統會自動刪除二進位記錄檔和相關的自動備份檔,通常會在七天後執行這項操作。你無法變更七天時間範圍。
如何追蹤資料變更?
如要追蹤資料變更,請為執行個體啟用二進位檔記錄。追蹤資料變更可協助您還原資料,避免資料意外遺失。如果發生資料遺失 (例如因 DROP DATABASE 指令而遺失),您可以將資料還原到資料遺失事件發生前的二進位記錄座標。詳情請參閱時間點復原
是否可以匯入或匯出特定的資料庫?
可以。您可以匯入或匯出執行個體上的特定資料庫或所有資料庫。詳情請參閱匯入資料匯出資料
是否可以匯入或匯出 CSV 檔案?
您可以匯入或匯出 MySQL 或 PostgreSQL 的 CSV 檔案,詳情請參閱「建立 CSV 檔案」。

Cloud SQL for SQL Server 目前不支援 CSV。

需要 Cloud Storage 帳戶才能在執行個體中匯入或匯出資料?
Cloud SQL 支援使用 Cloud Storage bucket 匯入及匯出資料庫 (已壓縮或未壓縮的 SQL 傾印檔案) 和 CSV 檔案。如要使用 Cloud Storage bucket 匯入或匯出資料,您必須註冊 Trusted Cloud 帳戶並建立 bucket,或是存取其他帳戶中的 Cloud Storage bucket。詳情請參閱使用 SQL 傾印檔案匯出及匯入,或使用 CSV 檔案匯出及匯入
ERROR_RDBMS 對匯入作業有什麼意義?
如果 MySQL 在資料匯入作業期間傳回錯誤,就會發生這個錯誤。常見原因包括語法無效、使用未定義的資料庫或資料表,以及嘗試執行需要 SUPER 權限的 MySQL 陳述式。
當我刪除執行個體時,是否可以重新使用這個執行個體的名稱?
可以。
什麼是 cloudsqladmin 資料庫使用者?
每個 Cloud SQL 執行個體都包含名為 cloudsqladmin 的資料庫使用者。如果您指定 SHOW GRANTS FOR cloudsqladmin@localhost,可能會注意到這位使用者。在部分執行個體中,這個使用者也會出現在系統使用者資料表中。這個使用者帳戶用於需要存取執行個體資料的自動流程 (例如,備份執行個體或執行匯入或匯出作業)。
如何使用 GRANT ALL
Cloud SQL 不支援 SUPER 權限,因此 GRANT ALL PRIVILEGES 陳述式無法運作。不過您可以改用 GRANT ALL ON `%`.*
如何存取執行個體的交易記錄檔?
如果是 MySQL 執行個體,啟用執行個體的二進位記錄 (請參閱「啟用二進位記錄」),並為執行個體設定 IP 位址 (請參閱「 設定 IP 連線的存取權」),即可使用標準 MySQL mysqlbinlog 公用程式檢查執行個體的交易記錄。
Cloud SQL 提供的交易隔離等級為何?

MySQL 執行個體: Cloud SQL 提供 REPEATABLE READ 交易隔離。您可以變更目前工作階段的交易隔離等級,但通常建議使用預設值。詳情請參閱 MySQL 說明文件中的 交易隔離等級

如何避免執行個體遭到意外刪除?
您可以在建立執行個體時或稍後啟用防刪除功能。 如果啟用這項設定,您必須先停用,才能刪除執行個體。請參閱防止刪除執行個體
返回頁首

深入分析

為什麼我無法在「洞察」中找到範例查詢計畫?
我們只提供取得查詢計畫的查詢範例,因為這可能會影響查詢效能。因此有時不會顯示查詢計畫範例。
返回頁首

價格與計費

如何才能試用 Cloud SQL?
最小的執行個體是 db-f1-micro。你可以使用這項服務。 請注意,服務水準協議不適用於共用核心執行個體。
可以在專案中建立多少執行個體?
如需進一步瞭解執行個體限制,請參閱 配額與限制
我需要多大的資料庫執行個體大小?多大的 RAM?
一般而言,選擇 RAM 和 CPU 較多的較大執行個體,即可提升資料庫效能。這項功能可提升許多涉及大量運算的查詢效能,例如涉及聯結、ORDER BY 或 GROUPING 的查詢,但影響單一資料列的更新作業效能不會受到太大影響。不過,執行個體越大,運作延遲時間就越長。如要進一步瞭解執行個體大小和價格,請參閱定價頁面
如何計算執行個體的使用?

MySQL 執行個體: 依據執行個體啟用的時間,以分鐘為單位計費 (啟用政策為 ALWAYS)。

如何計算儲存空間?
儲存空間的計算依據為佈建供執行個體使用的儲存空間量。備份儲存空間的計費方式是按照備份使用的空間量。無論執行個體是開啟還是關閉狀態,都會產生儲存空間費用。
如何知道我將支付多少費用?
Trusted Cloud 主控台的「帳單」分頁會顯示自上一份帳單發出後,執行個體產生的費用。
當我的執行個體到達大小上限時,會發生什麼情況?
如果執行個體達到佈建的儲存空間大小,且您未啟用自動增加儲存空間功能或已達到設定的上限,則在您增加儲存空間大小之前,您無法將新資料寫入資料庫。增加儲存空間大小不需要重新啟動或關閉執行個體。
為什麼我的執行個體被停權了?
可能是因為您的 Trusted Cloud 帳戶發生問題。 您可以提交 帳單支援要求來判斷您的帳單狀態。帳單問題解決之後,執行個體會在幾小時內恢復為可執行狀態。 請注意,系統會在 90 天後刪除遭到停權的 MySQL 執行個體。
為什麼我的執行個體遭到刪除?
被停權的 MySQL 執行個體會在 90 天後遭到刪除。這適用於狀態為 SUSPENDED 的執行個體。已停止但狀態為 RUNNABLE 的執行個體不會遭到刪除。
如何取消我的 Cloud SQL 帳戶?
如要停用專案的 Cloud SQL,請前往Trusted Cloud 控制台,選取專案,然後選取「API」服務以開啟 API 資訊主頁。 找出 Cloud SQL API,然後按一下該 API 的「停用」
如何停用計費功能?
如要停用計費功能,請在專案的 Trusted Cloud 控制台「帳單與設定」窗格中,按一下「停用計費功能」。如果停用計費功能,也會同時停用 Cloud SQL 服務。請務必確認要停用 Cloud SQL 服務,再停用計費功能。

您會在停用計費功能之後收到最後一份帳單,我們會向您收取自付費週期起到取消服務日這段期間內所產生的費用。

的「停用帳單」一節。
返回頁首

使用 Cloud SQL 搭配 App Engine

我可以從 App Engine 連線至 MySQL 執行個體嗎?
無論應用程式是在標準環境或彈性環境中執行,您都可以從 App Engine 應用程式連線至 MySQL 執行個體。詳情請參閱「從 App Engine 標準環境連線」或「從 App Engine 彈性環境連線」。
美國的 App Engine 應用程式可以存取歐盟的 Cloud SQL 執行個體嗎?反之亦然嗎?

如果您要連線至 MySQL 執行個體,App Engine 應用程式不一定要位於相同區域,而且可以在標準或彈性環境中執行。不過,Cloud SQL 執行個體與 App Engine 應用程式之間的距離越遠,連線至資料庫的延遲時間就越長。

哪種 Trusted Cloud 資料庫服務適合我?
這取決於應用程式的需求。 Trusted Cloud by S3NS 提供多種選項,可供您儲存、管理及擷取資料。詳情請參閱Trusted Cloud by S3NS 資料庫
是否需要安裝本機資料庫伺服務才能使用 App Engine 開發伺服器?
否。在開發伺服器上執行時,您可以設定 App Engine 使用 Cloud SQL 或本機安裝的資料庫伺服器。
我可以使用哪些語言來存取執行個體?
App Engine 標準環境支援多種語言,可用於連線至執行個體。詳情請參閱「從 App Engine 標準環境連線」或「從 App Engine 彈性環境連線」。

如果您未使用 App Engine,可以使用任何有相關聯的連接器或 API 的語言。如需支援的語言清單,請參閱 MySQL 參考手冊中的「連線器和 API」章節。

可以使用 Django 搭配 Cloud SQL 嗎?
可以。Cloud SQL 與 Django 相容。請參閱「開始使用 Django」。
哪一個預留位置可以用於 Python 查詢字串中?
Python 使用者只能在參數替代中使用 %s 格式碼。 因此,下列陳述式無效: cursor.execute('INSERT INTO entries (guestAge) VALUES (%d)', (age))
如何管理連線?

有效管理資料庫連線是資料庫應用程式開發的一個重要方面,包括使用連線集區與指數輪詢。如需如何以多種語言和架構使用這些技術的範例,請參閱管理資料庫連線一文。

如要進一步瞭解執行個體連線限制,請參閱配額與限制一文。

SQLException 的「無效的連線 ID」訊息代表什麼?
這表示伺服器上已不再開啟連線,且用戶端已捨棄連線。您不需要對這些連線呼叫「close」,因為連線已關閉。
可以在 App Engine 以外透過程式來存取我的 Cloud SQL 執行個體嗎?
可以。您可以使用任何支援的語言,從外部應用程式以程式輔助方式存取 Cloud SQL 執行個體。您也可以使用 Cloud SQL Java 連接器連線,包括編寫 Apps Script 指令碼來存取 Cloud SQL 資料庫。請參閱連線總覽
返回頁首