Cloud SQL 備份簡介

本頁面說明 Cloud SQL 執行個體的備份作業如何運作。您可以在主要執行個體上執行備份。

如需排定或管理備份作業的逐步操作說明,請參閱「建立及管理隨選和自動備份」。

如要瞭解如何從備份資料還原執行個體資料,請參閱還原執行個體總覽

備份的功能

您可以運用備份,將遺失的資料還原至 Cloud SQL 執行個體。此外,如果執行個體發生問題,您可以使用備份覆寫執行個體,將其還原至先前的狀態。如果執行個體含有必要資料,請啟用自動備份功能。備份功能可保護資料,避免遺失或毀損。

某些作業需要一起啟用自動備份及交易記錄,例如複製與備用資源建立作業。

備份的費用

根據預設,除了隨選備份外,Cloud SQL 會為每個 Cloud SQL Enterprise 版本執行個體保留 7 個自動備份,並為每個 Cloud SQL Enterprise Plus 版本執行個體保留 15 個自動備份。您可以設定要保留的自動備份數量 (1 到 365 份)。備份儲存空間的費率低於其他類型的執行個體。

刪除執行個體時,您可以最終備份資料。這樣一來,您就能重新建立刪除的執行個體。不過,如果您未建立最終備份,Cloud SQL 會在刪除執行個體後一併刪除所有備份。詳情請參閱「復原備份」。

詳情請參閱定價頁面

備份與匯出

備份作業由 Cloud SQL 根據保留政策管理,並與 Cloud SQL 執行個體分開儲存。Cloud SQL 備份與上傳至 Cloud Storage 的匯出內容不同,後者由您管理生命週期。備份作業涵蓋整個資料庫。匯出時可選取特定內容。

備份和還原作業無法用於將資料庫升級至較新版本。您只能將備份還原至資料庫版本相同的執行個體。

如要升級至較新版本,請考慮使用資料庫移轉服務,或是匯出資料庫並匯入至新的 Cloud SQL 執行個體

備份大小說明

Cloud SQL 備份是累加備份。只包含上次備份後變更的資料。最舊的備份大小與資料庫大小相近,但後續備份的大小取決於資料的變更率。刪除最早的備份時,下一個最早備份的大小就會增加,所以仍然會有完整的備份。

你可以查看個別備份的大小。備份大小代表每個備份的計費大小。

備份類型

Cloud SQL 會執行三種備份:

隨選備份

您隨時都可以建立備份。這在某些情況下非常實用,例如您即將要在資料庫上執行具有風險性的作業時,或是您需要備份但不想等到備份期間再執行備份作業。不論執行個體是否已啟用自動備份功能,您都可以為任何執行個體建立隨選備份。.

系統不會自動刪除隨選備份,但會自動刪除自動備份。 它們會一直存在,直到您刪除隨選備份或刪除其執行個體為止。由於系統不會自動刪除隨選備份,因此長期下來可能會影響帳單費用。

自動備份

系統每天都會自動在 4 小時的備份時間範圍內擷取備份。備份作業會在備份期間開始,如果可以,請將備份安排在執行個體活動最少的時間執行。

建議您不要刪除任何自動備份,因為這些備份是時間點復原功能運作的必要條件。

在備份時間範圍內,執行個體每天都會自動備份。執行個體停止後,系統會再進行一次自動備份,確保執行個體停止前的所有變更都已備份。根據預設,系統最多會保留最近七個備份。您可以設定要保留的自動備份數量,範圍為 1 到 365。您可以變更備份和交易記錄的保留值,不必使用預設設定。瞭解詳情

最終備份

您可以在刪除 Cloud SQL 執行個體前,使用最終備份功能備份執行個體。這項功能有助於在刪除執行個體後保留執行個體資料。您之後可以使用最終備份資料建立執行個體,或還原至現有執行個體。如要進一步瞭解如何存取及查看最終備份的詳細資料,請參閱「查看最終備份清單」。

根據預設,Cloud SQL 會將最終備份保留 30 天。不過,您可以自訂 Cloud SQL 保留備份的時間,從 1 天到 365 天不等。只要備份可用,您就可以從備份還原執行個體。最終備份的費用與其他備份相同,會依保留天數計費。

與自動備份和隨選備份不同,最終備份與執行個體相關聯,且只有在執行個體存在時才能使用。Cloud SQL 刪除執行個體後,您仍可查看及使用最終備份進行還原作業。

保留的備份

保留的備份是指執行個體刪除後,Cloud SQL 保留的備份。這些備份包括執行個體運作時建立的隨選備份和自動備份。刪除執行個體後,這些備份檔會與執行個體脫鉤,並儲存在專案層級。保留的備份與最終備份不同,最終備份是指刪除執行個體時執行的最後一次備份。

您可以更新這些備份的說明,方便在 Google Cloud 專案中管理備份。您可以隨時將保留的備份還原至新的或現有的 Cloud SQL 執行個體

這類備份的保留期限取決於備份類型,且執行個體刪除後就無法變更。隨選備份會無限期保留,直到手動刪除備份,或刪除包含備份的專案為止。執行個體刪除後,系統會以每天一個備份的形式,自動刪除備份。系統會根據刪除前執行個體的保留設定,定義滾動期。舉例來說,如果執行個體的自動備份保留設定為 7,則系統會在執行個體刪除 7 天後,刪除最新的自動備份。

您隨時可以手動刪除保留的備份。不過,刪除保留的備份後,就無法復原。

由於 Cloud SQL 刪除執行個體後,執行個體名稱仍可使用,因此系統會將保留的備份檔儲存在您的 Google Cloud 專案中,並加上名為 instance_deletion_time 的欄位。這個欄位可讓您判斷特定備份屬於即時或已刪除的執行個體。你也可以更新備份的說明,方便管理備份。

如要進一步瞭解如何為新執行個體或現有執行個體啟用保留備份,請參閱「管理保留備份」。如要進一步瞭解如何從保留的備份還原執行個體,請參閱「從保留的備份還原」。

備份的儲存位置

備份位置包括:

  • Cloud SQL 會根據原始執行個體的位置選取預設位置
  • 自訂位置:不想使用預設位置時可選擇。

預設備份位置

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

自訂備份位置

Cloud SQL 可讓您為備份資料選取自訂位置。如果貴機構必須遵守資料落地法規,規定備份資料只能存放在特定地理範圍內,這項功能就非常實用。如果貴機構有這類需求,可能使用資源位置限制機構政策。如果嘗試使用不符合政策的地理位置,系統會在「備份」頁面顯示警示。如果看到這則快訊,請將備份位置變更為政策允許的位置。

選取備份的自訂位置時,請注意下列事項:

  • 費用:執行個體中的某個叢集可能位於費用較低的區域。
  • 與應用程式伺服器的距離:建議您盡可能將備份資料儲存在鄰近服務應用程式的位置。
  • 儲存空間用量:備份檔案會越來越大,因此您需要足夠的儲存空間。視工作負載而定,叢集大小或磁碟用量可能有所不同。這可能會影響您選擇的叢集。

如需有效區域值的完整清單,請參閱執行個體位置。 如需多地區值的完整清單,請參閱多地區位置

如要進一步瞭解如何設定備份位置,以及查看執行個體使用的備份位置,請參閱「設定自訂備份位置」和「查看備份位置」。

自動備份和交易記錄保留

自動備份可用於還原 Cloud SQL 執行個體。系統會結合自動備份和交易記錄,執行時間點復原

設定保留期限後,自動備份最多可保留一年。隨選備份則會一直保留在伺服器上,直到您刪除備份或執行個體為止。

交易記錄是以天數計算,但自動備份不一定會在一天結束時執行。這些保留設定使用的單位不同。自動備份保留期限是計數,可設為 1 到 365 份備份。

交易記錄檔保留期限以天為單位。如果是 Cloud SQL Enterprise Plus 版執行個體,範圍為 1 至 35 天,預設為 14 天。如果是 Cloud SQL Enterprise 版本的執行個體,範圍為 1 到 7 天,預設為 7 天。無論是 Cloud SQL Enterprise Plus 版或 Cloud SQL Enterprise 版執行個體,交易記錄保留設定都必須低於備份保留設定。

下限適用於測試執行個體,因為系統會更快刪除記錄和備份。如果是交易記錄,磁碟大小不會隨著下限而大幅增加。如果自動備份保留期限較長,您就能還原較早時間的備份。

系統每天會清除記錄一次,而非持續清除。如果記錄保留天數與備份數量相同,可能會導致記錄保留時間不足。舉例來說,如果將記錄檔保留期限設為七天,備份保留期限設為七次備份,則系統會保留六到七天的記錄檔。

建議您將備份次數設為至少比記錄檔保留天數多一天,以確保記錄檔保留天數符合指定天數下限。

如果資料庫的寫入活動頻繁,可能會產生大量交易記錄,進而佔用大量磁碟空間,並導致啟用自動儲存空間增加功能的執行個體磁碟空間成長。建議您調整執行個體儲存空間大小,以保留交易記錄。

請參閱「設定自動備份保留期限」。

請參閱「設定交易記錄保留期限」。

我可以匯出備份嗎?

無法匯出備份。您只能匯出執行個體資料。請參閱「從 Cloud SQL 匯出資料」。

關於特殊備份使用者

Cloud SQL 會為每個執行個體建立專屬的資料庫使用者 cloudsqladmin,並為該使用者產生專屬的執行個體密碼。Cloud SQL 會以 cloudsqladmin 使用者身分登入,執行自動備份。

備份對執行個體作業的影響

寫入及其他作業不會受備份作業影響。

備份速率限制

Cloud SQL 會限制資料磁碟的備份作業速率。每個專案的每個執行個體每 50 分鐘最多可執行五項備份作業。如果備份作業失敗,不會計入這項配額。如果達到上限,作業就會失敗,並顯示錯誤訊息,說明何時可以重試。

讓我們看看 Cloud SQL 如何對備份作業執行速率限制。

Cloud SQL 會使用 bucket 中的權杖,判斷一次可進行的備份作業數量。每個執行個體都有一個 bucket。您最多可使用五個權杖進行備份作業。每 10 分鐘,系統會在值區中新增一個權杖。如果 bucket 已滿,權杖就會溢位。

每次發出備份作業時,系統都會從 bucket 授予權杖。如果作業成功,系統就會從區塊中移除權杖。如果失敗,權杖會退回 bucket。下圖說明運作方式:

權杖的運作方式

備份和資料完整性檢查

Cloud SQL 會自動執行背景資料庫完整性檢查,找出任何潛在的資料完整性問題。系統會還原客戶啟動的備份或復原備份樣本,以離線程序執行這些檢查。

復原備份

以及在刪除執行個體前建立最終資料備份。您也可以在刪除執行個體前啟用「保留備份」,保留所有自動和隨選備份。詳情請參閱「管理保留的備份資料」。

您可以從保留或最終備份還原至新執行個體、現有執行個體、不同專案中的執行個體,或另一個區域中的新執行個體。詳情請參閱「還原執行個體」。

如果自動備份政策沒有可用的備份,Cloud SQL 也會嘗試保留每個有效執行個體至少一個最後的良好每日備份。如要使用這項備份進行復原,請與 Google Cloud 客戶服務聯絡。

未記錄的資料表

備份還原期間,系統會自動清除未記錄的資料表。

疑難排解

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

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

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

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

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

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

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

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

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

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

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

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

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

自動備份失敗,且您未收到電子郵件通知。 如要讓 Cloud SQL 通知您備份狀態,請設定以記錄為準的快訊
執行個體在失敗和備份還原狀態之間循環,因此反覆失敗。還原後,嘗試連線及使用資料庫會失敗。
  • 開放連線過多,如果連線中途發生錯誤,且沒有 autovacuum 設定可清除無效連線,就可能導致連線過多。
  • 如果任何自訂程式碼使用重試邏輯,且在幾次失敗後不會停止,就可能發生循環。
  • 網路流量可能過大。使用連線集區和其他連線最佳做法

建議做法:

  1. 確認資料庫已為 autovacuum 設定完成
  2. 檢查自訂程式碼中是否已設定任何連線重試邏輯。
  3. 降低流量,直到資料庫復原,然後再緩慢調高流量。
執行備份/還原作業時,發現資料遺失。 資料表是以未記錄的形式建立。例如:

CREATE UNLOGGED TABLE ...

從備份還原時,不會還原下列資料表:

  • 在 HA 執行個體上,未記錄的資料表內容不會在容錯移轉後保留。
  • 未記錄的資料表在 PostgreSQL 發生當機時會遺失。
  • 系統不會將未記錄的資料表複製到唯讀副本。
  • 還原備份時,系統會自動清除未記錄的資料表。

解決方法是避免使用未記錄的資料表,以免無法透過備份還原這些資料表。如果從已含有未記錄資料表的資料庫還原,您可以將資料庫傾印至檔案,並在修改傾印檔案,將這些資料表上的 ALTER TABLE 變更為 SET LOGGED 後,重新載入資料。

後續步驟