還原執行個體總覽

Cloud SQL 可讓您從備份還原執行個體,或執行時間點復原 (PITR)。您可以將備份還原至現有執行個體,或還原至新執行個體,藉此將執行個體復原至特定期間或時間點。如要還原,可以使用運作中或已刪除執行個體的備份。還原作業會擷取來源執行個體的設定、資料庫和使用者,並在您選擇的目標執行個體中設定這些項目。

還原至新執行個體時,目標執行個體可以與來源執行個體位於不同區域或專案。目標執行個體的核心數或記憶體數量也可以與來源執行個體不同。

Cloud SQL 一律會將目標執行個體的儲存空間容量,設為設定磁碟和備份磁碟大小的最大值。備份磁碟的大小是備份時磁碟的大小。

在執行個體上執行還原作業時,請注意下列事項:

  • 還原作業會覆寫目標執行個體上的所有資料。
  • 系統不會還原來源執行個體的標記。還原後,目標執行個體先前設定的所有標記都會保留。
  • 目標執行個體在還原作業期間將會無法連線,現有的連線也會中斷。
  • 如果要還原至有唯讀備用資源的執行個體,必須刪除所有備用資源,並在還原作業完成後重新建立。
  • 還原作業會重新啟動執行個體。
  • 從備份還原後,目標執行個體的備份設定會設為預設值。如果來源執行個體有自訂備份設定或使用強化備份,還原完成後,您需要更新備份設定。

使用備份還原

Cloud SQL 可讓您使用備份還原執行個體。您可以從現有或已刪除的執行個體使用備份檔,並用來還原至新的或現有的執行個體。您可以使用任何可用的備份來還原執行個體。如要進一步瞭解 Cloud SQL 的備份運作方式,請參閱「備份總覽」。

使用備份還原執行個體時,您可以執行下列操作:

  • 還原至新執行個體
  • 還原至現有執行個體
  • 還原至其他專案或區域中的執行個體

如果發生服務中斷情形,您還是可以擷取特定專案中的備份清單,並從中還原資料。

如要使用備份還原執行個體,請參閱「使用備份還原執行個體」。

時間點復原 (PITR)

您可以使用 PITR 將執行個體還原至資料庫的特定時間點。舉例來說,如果發生錯誤而遺失資料,您可以將資料庫復原至錯誤發生前的狀態。與使用備份還原不同,PITR 一律會建立新的執行個體。您無法對現有執行個體執行 PITR。新的執行個體會繼承來源執行個體的設定,與建立副本類似。

如果您建立 Cloud SQL Enterprise Plus 版本執行個體,系統預設會啟用 PITR。 你必須手動停用這項功能

如果您在 Google Cloud 控制台中建立 Cloud SQL Enterprise 版執行個體,系統預設會啟用 PITR。否則,如果您是使用 gcloud CLI、Terraform 或 Cloud SQL Admin API 建立執行個體,系統預設會停用 PITR。如要為這些執行個體啟用 PITR,您必須手動啟用。

如需執行 PITR 的逐步操作說明,請參閱「使用時間點復原 (PITR)」。

時間點復原功能的記錄檔儲存空間

PITR 會使用預先寫入記錄 (WAL) 封存記錄。使用備份還原現有執行個體時,這些封存記錄會遭到刪除,無法用於執行 PITR。還原完成後,只有新產生的記錄檔可用於 PITR。

我們已於 2023 年 1 月 9 日推出這項功能,將時間點復原 (PITR) 的交易記錄儲存在 Cloud Storage。自這項功能推出以來,適用下列條件:

  • 所有 Cloud SQL Enterprise Plus 版執行個體都會將用於 PITR 的預先寫入記錄儲存在 Cloud Storage 中。只有在 2024 年 4 月 1 日前從 Cloud SQL Enterprise 版本升級,且在 2023 年 1 月 9 日前啟用 PITR 的 Cloud SQL Enterprise Plus 版本執行個體,才會繼續在磁碟上儲存 PITR 的記錄。

  • 在 2023 年 1 月 9 日前建立的 Cloud SQL Enterprise 版執行個體,如果已啟用 PITR,系統會繼續在磁碟上儲存 PITR 記錄。

  • 如果您在 2023 年 1 月 9 日後,將儲存時間點復原交易記錄的 Cloud SQL Enterprise 版執行個體升級至 Cloud SQL Enterprise Plus 版,升級程序會自動將時間點復原交易記錄的儲存位置切換至 Cloud Storage。詳情請參閱使用就地升級功能將執行個體升級為 Cloud SQL Enterprise Plus 版本

  • 在 2023 年 1 月 9 日後建立的 Cloud SQL Enterprise 版執行個體,如果啟用 PITR,系統會將用於 PITR 的記錄儲存在 Cloud Storage 中。

如果執行個體使用 Cloud Storage 儲存預先寫入記錄,記錄會儲存在與主要執行個體相同的區域。這些記錄最多可保留 35 天 (Cloud SQL Enterprise Plus 版本) 或 7 天 (Cloud SQL Enterprise 版本),且每個執行個體不會產生額外費用。

如要進一步瞭解如何檢查 PITR 使用的交易記錄儲存位置,請參閱「檢查執行個體的交易記錄儲存位置」。

如果執行個體只將預先寫入記錄儲存在磁碟上,您可以使用 gcloud CLI 或 Cloud SQL Admin API,將用於 PITR 的交易記錄儲存位置從磁碟切換至 Cloud Storage。詳情請參閱「將交易記錄儲存空間切換至 Cloud Storage」。

如要確保執行個體的記錄儲存在 Cloud Storage 中,而非磁碟上,請完成下列動作:

  • 檢查執行個體的網路架構。 如果執行個體採用舊版網路架構,請升級為新版網路架構
  • 如果磁碟上的記錄大小導致執行個體發生效能問題,請停用 PITR 並重新啟用。這項動作可確保新記錄儲存在 Cloud Storage 中,而非磁碟上。

記錄保留期限

Cloud SQL 會將交易記錄保留在 Cloud Storage 中,保留時間最長為 transactionLogRetentionDays PITR 設定中設定的值。Cloud SQL Enterprise Plus 版本的這個值可介於 1 到 35 天,Cloud SQL Enterprise 版本則可介於 1 到 7 天。如果未設定這個參數的值,Cloud SQL Enterprise Plus 版執行個體的預設交易記錄保留期限為 14 天,Cloud SQL Enterprise 版執行個體的預設交易記錄保留期限則為 7 天。如要進一步瞭解如何設定交易記錄保留天數,請參閱「設定交易記錄保留天數」。

雖然執行個體會將用於 PITR 的預先寫入記錄檔儲存在 Cloud Storage 中,但執行個體也會在磁碟上保留較少數量的重複預先寫入記錄檔,以便將記錄檔複製到 Cloud Storage。根據預設,如果建立的執行個體已啟用 PITR,執行個體會將 PITR 的預先寫入記錄儲存在 Cloud Storage 中。Cloud SQL 也會自動將 expire_logs_daysbinlog_expire_logs_seconds 旗標的值設為相當於一天的值。這表示磁碟上會儲存一天的記錄。

對於儲存在磁碟、要切換至 Cloud Storage,或已切換至 Cloud Storage 的時間點復原 (PITR) 先寫入記錄,Cloud SQL 會保留記錄,時間長度至少為下列其中一項設定的最小值:

  • transactionLogRetentionDays 備份設定
  • expire_logs_daysbinlog_expire_logs_seconds 標記

如果預先寫入記錄檔儲存在磁碟上、正在切換至 Cloud Storage,或已切換至 Cloud Storage,Cloud SQL 就不會為這些旗標設定任何值。如果記錄檔儲存在磁碟上,修改這些旗標的值可能會影響 PITR 復原作業的行為,以及磁碟上儲存的記錄檔天數。將記錄儲存位置切換至 Cloud Storage 時,您無法修改旗標值。我們也不建議將任一旗標值設為 0。詳情請參閱「設定資料庫旗標」。

  • transactionLogRetentionDays 設定
  • expire_logs_days 資料庫旗標
  • binlog_expire_logs_seconds 資料庫旗標

舉例來說,為避免發生效能問題,請在幾天內每天將旗標值減少一天。因此,Cloud SQL 不會同時清除所有預先寫入記錄。

對於啟用客戶自行管理的加密金鑰 (CMEK) 的執行個體,系統會使用最新版本的 CMEK 加密預先寫入記錄。如要執行還原作業,您必須為所有保留的天數提供最新金鑰版本,這些天數會保留為 retained-transaction-log-days 參數的一部分。

時間點復原功能限制

如果執行個體已啟用 PITR,且磁碟上的交易記錄大小導致執行個體發生問題,就會受到下列限制:

  • 您可以停用 PITR,然後重新啟用,確保 Cloud SQL 將記錄儲存在與執行個體相同的 Cloud Storage 區域。不過,Cloud SQL 會刪除所有現有記錄,因此您無法在重新啟用 PITR 之前執行 PITR 作業。
  • 您可以增加執行個體儲存空間大小,但磁碟用量增加的交易記錄大小可能只是暫時的。
  • 為避免發生意料之外的儲存空間問題,建議啟用自動增加儲存空間。只有在執行個體已啟用 PITR,且記錄檔儲存在磁碟上時,這項建議才適用。

如需執行 PITR 的逐步操作說明,請參閱 [使用時間點復原 (PITR)][perform-pitr]。

還原無法使用的執行個體

您可以使用 PITR 還原無法使用的 Cloud SQL 執行個體。時間點復原功能通常提供五分鐘以內的復原點目標 (RPO)。

如果執行個體無法使用,您可以透過 API 取得最早和最晚的復原時間,然後將執行個體還原至該時間點。如果無法存取執行個體設定所在的可用區,您可以提供偏好的可用區值,將執行個體還原至其他主要或次要可用區。

假設 Cloud SQL 執行個體在美東時間下午 4 點無法使用。如果最新的復原時間是美東時間下午 3 點 55 分,您就可以將執行個體復原到這個時間點。

使用 PITR 還原已刪除的執行個體

您可以使用 PITR 在刪除後還原 Cloud SQL 執行個體。如要使用這項功能,執行個體必須在刪除前啟用 PITR保留備份。啟用後,系統會在您刪除執行個體後保留 PITR 記錄。

執行個體刪除後,PITR 記錄會繼續遵循執行個體運作時定義的保留設定。執行個體刪除後,PITR 記錄檔會根據保留設定,以滾動方式到期。系統會根據刪除執行個體前設定的PITR 保留期限,定義滾動期。舉例來說,如果 Cloud SQL Enterprise Plus 執行個體的 PITR 保留時間設為 14 天,則系統會在執行個體刪除 14 天後,刪除最新的 PITR 記錄。PITR 記錄到期後就無法復原。

由於執行個體刪除後,Cloud SQL 允許重複使用執行個體名稱,因此您可以在 Google Cloud 中透過下列欄位識別保留的 PITR 記錄:

  • instance_deletion_time
  • log_retention_days

您可以使用這些欄位,判斷 PITR 記錄是否屬於已刪除的執行個體。

PITR 復原時間範圍是指可使用 PITR 還原執行個體的最早和最晚時間。如要找出已刪除執行個體的最早和最晚復原時間,請參閱「取得最早和最晚復原時間」。

如要在刪除執行個體後使用 PITR 還原執行個體,請參閱「對已刪除的執行個體執行 PITR」。

還原至新執行個體的需求

將執行個體還原到新執行個體時,請注意下列規定:

  • 目標執行個體的資料庫版本必須與備份的來源執行個體資料庫版本相同。

  • 目標執行個體的儲存空間容量必須至少與備份執行個體的「容量」一樣大。使用的儲存空間量則沒有關係。您可以在控制台的 Cloud SQL 執行個體頁面中查看執行個體的儲存空間容量。

  • 目標執行個體必須處於 RUNNABLE 狀態。

還原費率限制

每個專案的每個區域,每 30 分鐘最多可對每個執行個體執行三次還原作業。如果還原作業失敗,則不會計入這項配額。如果達到上限,作業就會失敗,並顯示錯誤訊息,說明何時可以再次執行作業。

Cloud SQL 會使用 bucket 中的權杖,判斷一次可進行多少還原作業。每個備份作業都會為每個目標專案和目標區域建立一個 bucket。如果目標執行個體位於相同區域,則來自相同專案的目標執行個體會共用一個值區。每個 bucket 最多可有三個權杖,供還原作業使用。每 10 分鐘,系統就會在值區中新增一個權杖。如果 bucket 已滿,權杖就會溢位。

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

權杖的運作方式

舉例來說,在下圖中,Backup1、Backup2 和 Backup3 是來自相同來源執行個體的備份。

還原作業的頻率限制權杖

  • 每個備份 (Backup1、Backup2 和 Backup3) 都有自己的權杖值區,用於還原作業,目標是 A 區域專案 1 中的不同執行個體 (Bucket11A、Bucket21A 和 Bucket31A)。由於每個備份都有自己的 bucket,因此每隔 30 分鐘,您就能將每個備份復原到同一個執行個體三次。
  • 每個備份都有專屬專案和區域的 bucket。 舉例來說,如果某個區域有五個專案,該區域的備份作業就會有五個 bucket,每個專案各有一個 bucket。在上圖中,區域 A 有兩個專案:專案 1 和專案 n。
    • Backup1 有兩組權杖,可用於在 A 區域執行還原作業。專案 1 的一個值區 (Bucket11A),以及專案 n 的一個值區 (Bucket1nA)。
    • 同樣地,Backup3 在 A 區域有兩個值區,用於還原作業。專案 1 (Bucket31A) 和專案 n (Bucket3nA) 各有一個。
  • Backup3 在專案 1 的 B 區域中只有一個 bucket,因為相同目標專案和相同目標區域中的所有執行個體會共用一個 bucket。

後續步驟