PostgreSQL 適用的 Cloud SQL 常見問題

簡介

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

PostgreSQL 適用的 Cloud SQL 支援 PostgreSQL 9.6、10、11、12、13、14、15、16、17 和 18 (預設)。

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

如要查看執行個體的目前版本,請前往 Google Cloud 控制台,點選執行個體名稱開啟「執行個體詳細資料」頁面。或者,您也可以使用 gcloud sql instances describe 指令。

Cloud SQL 是否支援所有資料庫功能?
Cloud SQL 支援 PostgreSQL 的大多數常見功能。如要查看標準 PostgreSQL 與 Cloud SQL 提供功能的所有差異,請參閱「Cloud SQL 與標準 PostgreSQL 功能的差異」。
是否有任何大小或 QPS 限制?
Cloud SQL 執行個體沒有每秒查詢次數 (QPS) 限制。如要瞭解連線、大小和 App Engine 專屬限制,請參閱「配額與限制」。
我要如何得知 Cloud SQL 的任何變動?
您可以訂閱 PostgreSQL 版本資訊頁面的 RSS 動態消息。
如何回報錯誤、要求新功能或詢問問題?

您可以在 Google Cloud 開發人員計畫社群論壇中提問。詳情請參閱下列 Cloud SQL 討論論壇:

如要查看一般 Google Cloud 狀態,請前往 Google Cloud 狀態追蹤工具。

如果您發現可重現的 Cloud SQL 錯誤,或想要求新功能,請前往 Issue Tracker。

返回頁首

開始使用

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

資料儲存、複製和驗證

我的資料儲存在哪裡?

執行個體資料會儲存在執行個體所在的區域。 如未指定儲存位置,備份會儲存在與 Cloud SQL 執行個體位置最接近的多區域。舉例來說,如果 Cloud SQL 執行個體位於 us-central1,系統預設會將備份儲存在 us 多區域。不過,australia-southeast1 等預設位置在多區域之外,最近的多區域為 asia。

什麼是區域?

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

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

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

PostgreSQL 執行個體提供高可用性設定和唯讀副本。

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

如要進一步瞭解唯讀副本,包括各種類型的用途,請參閱「複製選項」。

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

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

我的資料有經過加密嗎?
Cloud SQL 客戶資料儲存在資料庫資料表、暫存檔案和備份時,都會經過加密。外部連線可使用 SSL 或 Cloud SQL Auth Proxy 加密。
如何管理靜態資料加密?

您的資料會使用 256 位元高級加密標準 (AES-256) 或更高等級的對稱式金鑰加密,也就是說,系統會使用相同的金鑰在資料儲存時加密,並在資料使用時解密。這些資料金鑰本身會使用儲存在安全金鑰庫中的金鑰加密,並定期變更。

詳情請參閱「Google Cloud 靜態資料加密」。

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

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

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

返回頁首

資料遷移

資料和限制條件如何遷移至 Cloud SQL?
在遷移過程中,系統會先遷移資料,然後在執行個體上重新建立限制 (例如主鍵、外鍵和索引)。
如何加快資料遷移速度?
您現在可以平行遷移資料庫中的資料表。 由於 Cloud SQL 可以在資料庫中以平行程序傳輸資料,因此效能有所提升。您可以將 Cloud SQL 移轉這類資料的速度設為 min、optimal 或 max。詳情請參閱「 使用代管匯入功能設定外部資料庫的複製作業」。
返回頁首

備份與還原

如何復原執行個體?

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

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

備份的費用是多少?

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

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

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

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

請注意,隨選備份不會自動刪除,必須手動移除。

何時該使用外部複製,何時該使用跨區域複製,以防範區域故障?
外部複製 跨區域複製
由客戶自行管理 Cloud SQL 代管跨區域副本
可在非 Google Cloud 和 Google Cloud 執行個體之間複製 只能在 Cloud SQL 執行個體之間複製
遷移至 Google Cloud 或從 Google Cloud 遷移,盡可能縮短停機時間,或保護混合雲/多雲端資料 在 Google Cloud 區域之間遷移資料,盡量減少停機時間
支援跨主要版本複製 不支援跨主要版本複製
返回頁首

管理執行個體

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

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

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

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

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

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

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

您隨時可以增加執行個體的可用儲存空間,不會造成停機。您不能縮減執行個體的儲存空間大小。您也可以將執行個體設為在空間不足時自動增加儲存空間容量。瞭解詳情。

可以升級和降級 vCPU 嗎?

可以。您可以變更執行個體使用的 vCPU 數量。您可以視需要調整核心數量,變更 vCPU 數量通常需要不到五分鐘的停機時間。如果增加 Cloud SQL Enterprise Plus 版本主要執行個體的 vCPU 數量,變更生效時幾乎不會造成停機。

我是否需要使用 Google Cloud 控制台管理 Cloud SQL?
否。您可以使用控制台執行所有管理工作,也可以透過 Cloud SQL Admin API 以程式輔助方式執行,或使用 gcloud 指令列工具編寫指令碼。
如何回收暫存檔案使用的空間?
如果 SQL 查詢建立許多暫存資料表,暫存檔案可能會增加。如要回收臨時資料表使用的空間,請重新啟動資料庫。請注意,重新啟動資料庫並不會減少因暫存檔案增加而產生的佈建磁碟空間。
是否可以匯入或匯出特定的資料庫?
可以。您只能匯入或匯出特定的資料庫;您無法同時匯入或匯出多個資料庫。詳情請參閱「匯入資料」或「匯出資料」。
是否可以匯入或匯出 CSV 檔案?
您可以匯入或匯出 MySQL 或 PostgreSQL 的 CSV 檔案。詳情請參閱「建立 CSV 檔案」。

SQL Server 適用的 Cloud SQL 目前不支援 CSV。

是否需要 Cloud Storage 帳戶,才能將資料匯入或匯出至執行個體?
Cloud SQL 支援使用 CSV 或 pg_dump 檔案匯入及匯出資料庫。詳情請參閱「使用 pg_dump 和 pg_restore 匯出及匯入」或「使用 CSV 檔案匯出及匯入」。
當我刪除執行個體時,是否可以重新使用這個執行個體的名稱?
可以。
cloudsqladmin 資料庫使用者是什麼?
每個 PostgreSQL 適用的 Cloud SQL 執行個體都包含名為 cloudsqladmin 的資料庫使用者。如果您在 psql 中執行 \du cloudsqladmin 中繼指令,或查詢 SELECT * FROM pg_roles WHERE rolname = 'cloudsqladmin',可能會發現這個使用者。 在某些執行個體中,這位使用者也會顯示在系統使用者表格中。自動程序需要存取執行個體中的資料時,就會使用這個使用者帳戶 (例如備份執行個體,或執行匯入/匯出作業)。
Cloud SQL 提供的交易隔離等級為何?

PostgreSQL 執行個體: Cloud SQL 提供 Read committed 交易 隔離。您可以變更特定交易的交易隔離等級,但通常建議使用預設值。詳情請參閱 PostgreSQL 說明文件中的「Transaction Isolation」(交易隔離)。

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

深入分析

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

價格與計費

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

系統會依執行個體開啟的時間,按分鐘計費。

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

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

中的「停用計費功能」一節。
返回頁首

使用 Cloud SQL 搭配 App Engine

可以從 App Engine 連結至 PostgreSQL 執行個體嗎?
您可以從 App Engine 應用程式連線至 PostgreSQL 執行個體,具體取決於您使用的環境和語言。詳情請參閱「從 App Engine 標準環境連線」或「從 App Engine 彈性環境連線」。
位於美國的 App Engine 應用程式是否能存取位於歐盟的 Cloud SQL 執行個體 (反之亦然)?

如果您要連線至 Cloud SQL 執行個體,App Engine 應用程式不需位於相同區域。但 Cloud SQL 執行個體和 App Engine 應用程式之間的距離愈遠,連結資料庫的延遲時間就會愈長。

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

如果您不是使用 App Engine,可以使用任何具備關聯連接器或 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 執行個體。 請參閱「連線總覽」。
返回頁首