本文概要說明 Spanner 備份和備份排程。
Spanner 可讓您視需要建立資料庫的完整備份,以及使用備份排程建立完整或增量備份。完整備份會儲存資料庫的完整資料,而增量備份只會儲存上次備份後異動的資料。
如果運算子或應用程式發生錯誤,導致邏輯資料損毀,您可以還原備份。
備份資料具有高可用性,且經過加密,建立後最多可保留一年。建立備份時,備份會與來源資料庫位於相同的執行個體、區域和專案。如因法規遵循或業務持續性考量,需要將備份還原至其他區域或專案,您可以將備份複製到其他區域或專案的執行個體。
每個備份都有相關聯的 createTime
和 versionTime
。createTime
是指 Spanner 開始建立備份的時間戳記。versionTime
是指擷取備份資料庫內容的時間戳記。備份內容包含 versionTime
時資料庫的一致性檢視畫面。
如果是隨選備份,createTime
和 versionTime
預設相同。如有需要,您可以在建立隨選備份時指定較舊的 versionTime
,但必須在資料庫的版本保留期限內。
如果是排定的備份作業,versionTime
是您建立備份排程時選擇的時間。Spanner 會在 versionTime
的四小時內開始建立備份,因此 createTime
會在這四小時內。這與隨選備份不同,Spanner 會在收到要求時開始建立備份。
舉例來說,假設您建立的備份排程頻率為每天世界標準時間上午 7:00,0 7 * * * UTC
也就是說,每次備份的 versionTime
都會設為世界標準時間上午 7 點,而 createTime
則是世界標準時間上午 7 點至上午 11 點這四小時內的某個時間戳記。
如要進一步瞭解如何透過 API 使用 createTime
和 versionTime
,請參閱 Backup API 參考資料。
主要功能與特色
資料一致性:Spanner 資料庫的備份在備份時間點
versionTime
具有交易一致性和外部一致性。複製:備份與來源資料庫位於同一個執行個體,並複製到相同的地理位置。如果是區域執行個體,備份會儲存在三個讀寫區域中。如果是雙地區和多地區執行個體,備份會儲存在包含讀寫或唯讀備用資源的所有區域。如要將資料庫備份儲存在不同區域或專案中,可以將來源執行個體中已完成的備份作業,複製到位於不同區域或專案的目的地執行個體。詳情請參閱複製備份。
自動到期:所有備份都有使用者指定的到期日,系統會在到期日自動刪除備份。Spanner 會非同步刪除過期的備份,因此備份過期到實際刪除之間可能會有一段延遲時間。
建立備份
建立備份時,備份會與來源資料庫位於相同的執行個體、區域和專案。
備份包含備份時間點versionTime
的資料庫資訊:
- 完整備份包含所有資料。增量備份只會包含上次備份後異動的資料。
- 結構定義資訊,包括資料表名稱、欄位、資料類型、次要索引、變更串流,以及這些實體之間的關係。
- 使用
ALTER DATABASE SET OPTIONS
指令設定的所有資料庫選項。
Spanner 備份不包含下列資訊:
versionTime
後對資料或結構定義所做的任何修改。- 身分與存取權管理 (IAM) 政策。
- 變更串流資料記錄。雖然系統會儲存變更串流結構定義,但變更串流資料應串流輸出,並在描述的變更發生後近乎同步使用。
為確保備份的外部一致性,Spanner 會在 versionTime
固定資料庫內容。這樣一來,垃圾收集系統就不會在備份作業期間移除相關資料值。然後,執行個體中的每個讀寫和唯讀區域都會開始平行複製資料。如果任何區域暫時無法使用,備份作業要等到該區域恢復連線後才會完成。作業完成後,備份隨即可以還原。如果是多區域執行個體,所有區域中的所有讀寫和唯讀區域都必須完成備份副本,備份才會標示為可還原。
備份排程
Spanner 可讓您排定資料庫的完整或增量備份作業。增量備份只會包含上次備份後變更的資料,完整備份則會儲存整個資料庫的內容。您可以指定備份排程類型 (完整或增量) 和頻率,讓 Spanner 建立備份。
完整備份排程可每 12 小時或更久建立一次備份。增量備份排程可每 4 小時或更久建立一次備份。
Spanner 可透過備份時間表,為資料庫提供增量備份。您無法視需求建立增量備份。
系統會在排定時間的 4 小時內開始建立備份。 每個資料庫最多可有四個備份排程。
增量備份
增量備份會在完整備份之間形成鏈結。增量備份排程建立的第一個備份是完整備份。鏈結中連續建立的備份是增量備份,每個備份只包含鏈結中上次備份後變更的資料。
除了初始完整備份外,Spanner 允許每個鏈結最多有 13 個增量備份。鏈結是由對應的 incrementalBackupChainId
值識別。當鏈結達到長度上限時,Spanner 會建立新鏈結,並從初始完整備份開始。
在某些情況下,Spanner 可能會在達到鏈結長度上限前建立新鏈結。以下列舉幾種情況:
- 最舊的完整備份已超過 28 天。
- 刪除鏈結中最新的備份。
- 增量備份排程已修改。
以下是一些可協助您決定是否使用增量備份的因素:
加密:即使資料庫是以客戶自行管理的加密金鑰 (CMEK) 加密,增量備份也只支援使用 Google-owned and Google-managed encryption keys 加密。
還原:還原增量備份所需的時間,可能比還原包含相同資料的完整備份更長。
刪除:如果您刪除鏈結中的備份或備份到期,Spanner 可能仍會保留備份,以支援鏈結中較新的備份 (如有)。Spanner 需要鏈結中的所有舊備份,才能還原增量備份。如要刪除備份鏈中的所有資料,包括過期或已刪除的備份,請刪除鏈中的所有備份。
保留:每個備份排程都有下列條款,提供排程相關資訊:
creation_interval
:代表備份排程的指定排程頻率。retention_duration
:代表系統會保留排程建立的備份多久。如果鏈結中較新的備份作業需要最舊的完整備份作業,系統會保留該備份作業,即使已超過原始到期日也一樣。完整備份的總保留時間最多為下列值的較小者:retention_duration
+ 28 天retention_duration
+ (creation_interval
*14)
備份副本:複製增量備份時,Spanner 也會複製還原備份副本所需的鏈結中所有較舊的備份。如果目標執行個體已包含備份鏈,且該鏈結是以從相同來源鏈複製的舊備份結尾,Spanner 會避免建立現有備份的備援副本。Spanner 只會複製增量備份和目標鏈中不存在的任何舊備份,並將這些備份附加至現有鏈。Spanner 會根據儲存空間總用量向您收費。
舉例來說,如果您設定每日增量備份排程,並每天複製最新備份,目標執行個體就會維護與來源鏈鏡像的備份鏈。在後續複製作業中,Spanner 不會重複複製鏈結中先前複製的備份。
雖然 Spanner 會盡量避免備份副本重複,但在極少數情況下,Spanner 可能需要複製鏈結中的所有舊備份,即使目的地執行個體中已有先前複製的備份也一樣。
如要進一步瞭解如何建立增量備份,請參閱「建立及管理備份排程」。
預設備份排程
建立新的 Spanner 執行個體時,您可以指定是否要讓 Spanner 為執行個體中的每個新資料庫建立預設備份排程。預設備份排程會每 24 小時建立一次完整備份,這些備份的保留期限為 7 天。建立預設備份排程之後,您可以加以編輯或刪除。
所有新執行個體都會自動啟用預設備份時間表。建立執行個體時,或稍後編輯執行個體時,您可以在執行個體中啟用或停用預設備份排程。
您可以為現有執行個體啟用預設備份排程。 不過,預設備份時間表不適用於執行個體中的現有資料庫。預設備份時間表只會套用至執行個體中的新資料庫。
預設備份排程會在 24 小時內生效,並開始建立備份。
刪除執行個體前,必須先刪除執行個體中的所有備份。如果您是為了測試而建立及刪除執行個體,可以在 24 小時內刪除新執行個體,避免手動刪除備份。
如要瞭解如何啟用或停用預設備份排程,請參閱「編輯預設備份排程類型」。
完整備份和增量備份的儲存費用
每個 Spanner 備份都有下列欄位,可提供儲存空間用量相關資訊:
exclusiveSizeBytes
:顯示備份所需的位元組數。這個大小代表備份的計費大小。freeableSizeBytes
:顯示刪除備份後釋放的位元組數。oldestVersionTime
:顯示鏈中最舊完整備份的versionTime
,即使該備份已過期也一樣。您可以透過這個欄位瞭解儲存的資料。
漸進式備份可節省儲存空間費用。增量備份的 exclusiveSizeBytes
欄位可能比完整備份小得多,因為增量備份只需要儲存鏈結中上次備份後的變更。為鏈結中的每個備份項目新增這個欄位值,即可反映鏈結中備份項目使用的位元組總數。
如要還原增量備份,必須先還原同一鏈結中的所有舊備份。也就是說,如果存在較新的增量備份,系統就無法刪除鏈結中所有較舊備份的資料,且同一鏈結中所有較舊備份的 freeableSizeBytes
欄位都會是零。
假設您為大小為 100 GB 的資料庫建立完整備份排程和增量備份排程,且資料庫每天會增加 10 GB。下表列出這些備份排程的可能儲存空間費用:
天 | 完整排程備份大小 | 增量排程備份大小 |
---|---|---|
1 | 100 GB | 100 GB |
2 | 110 GB | 10 GB |
3 | 120 GB | 10 GB |
4 | 130 GB | 10 GB |
5 | 140 GB | 10 GB |
5 天後,完整備份排程會使用 600 GB 的儲存空間,而增量備份排程則會使用約 140 GB 的儲存空間。如果是增量備份排程,完整備份大小是鏈結中所有備份的大小總和 (最多到該備份),並會反映在 sizeBytes
欄位中。
備份副本的運作方式
Spanner 可讓您將 Spanner 資料庫的備份從一個執行個體複製到不同區域或專案中的另一個執行個體,以提供額外的資料保護和法規遵循功能。
如果目標或來源 Google Cloud 區域發生故障,您就無法複製備份。 如要避免區域服務中斷導致資料遺失,您必須定期將備份副本複製到受影響區域以外的位置。
複製的備份資料與原始備份資料具有相同的主要功能。此外,您可以在與複製備份相同的執行個體中還原複製備份,以支援跨區域和跨專案備份與還原的使用情境。
Spanner 備份的儲存位置
備份是 Spanner 中的資源。 每個備份資源都會在資源階層中,與來源資料庫位於同一個執行個體下,且資源路徑採用下列格式:
projects/PROJECT_ID/instances/INSTANCE_ID/backups/BACKUP_NAME
取代下列項目:
PROJECT_ID
:專案 ID。INSTANCE_ID
:執行個體 ID。BACKUP_NAME
:備份名稱。
即使來源資料庫已刪除,備份仍會繼續存在,但無法超過父項執行個體的存留時間。為避免誤刪備份,如果 Spanner 執行個體有備份,您就無法刪除該執行個體。如要刪除執行個體,建議您先還原備份資料,然後匯出還原的資料庫,再刪除備份資料和執行個體。
加密
與資料庫一樣,Spanner 備份也會透過Google-owned and Google-managed encryption keys 或客戶自行管理的加密金鑰 (CMEK) 加密。根據預設,備份會使用與資料庫相同的加密設定,但您可以在建立備份時指定不同的加密設定,藉此覆寫這項行為。如果備份已啟用 CMEK,系統會使用建立備份時的主要 KMS 金鑰版本進行加密。備份檔建立後,即使 KMS 金鑰輪替,備份檔的金鑰和金鑰版本也無法修改。詳情請參閱建立啟用 CMEK 的備份。
複製的備份會使用與來源備份加密相同的加密設定,也就是Google-owned and Google-managed encryption keys 或客戶自行管理的加密金鑰 (CMEK)。如要覆寫這項行為,請在複製備份時指定不同的加密設定。如要讓複製的備份檔在跨區域複製時以 CMEK 加密,請指定與目標區域對應的 Cloud KMS 金鑰。
建立或修改備份排程時,您可以指定加密設定。如要讓備份排程建立以 CMEK 金鑰加密的備份,請指定金鑰路徑。
增量備份僅支援使用Google-owned and Google-managed encryption keys加密,即使資料庫是以 CMEK 金鑰加密也一樣。
成效
本節說明 Spanner 的最佳備份效能。
備份時的效能
執行備份時,Spanner 會建立備份工作,將資料直接從資料庫複製到備份儲存空間,並根據資料庫大小調整這項工作的大小。這項備份作業不會使用分配給資料庫執行個體的 CPU 資源,因此不會影響執行個體的效能。此外,資料庫執行個體的運算負載不會影響備份作業的速度。如要追蹤備份作業的進度和完成狀態,請參閱「顯示備份進度」。
一般來說,大多數備份作業需要 1 到 4 小時。部分備份作業可能需要較長時間,這是因為備份檔案較大,或是資源內部佇列作業所致。如果備份作業耗時比平常更久,且沒有其他因素改變,可能是因為區域中的備份工作排程延遲。這項作業有時可能需要 30 分鐘才能完成。建議您不要取消並重新啟動備份,因為新的備份作業很可能也會遇到相同的排程延遲問題。
複製備份內容時的效能
複製備份所需的時間取決於多項因素,例如來源備份的大小,以及複製備份的目的地區域。一般而言,大多數的副本會在 1 到 4 小時內完成。視備份大小和目的地區域而定,部分副本可能需要較長時間才能完成複製。複製備份不會對來源執行個體或資料庫造成任何效能影響。您可以同時將來源備份複製到不同區域的執行個體,不會對效能造成任何影響。
複製增量備份時,Spanner 也會複製還原所複製備份所需的鏈結中所有舊備份。為提升效能,Spanner 會同時複製所有備份,而非依序複製。Spanner 也會盡可能避免複製同一鏈結中的舊備份。詳情請參閱「增量備份」。
刪除備份
刪除增量備份時,如果同一鏈結中存在較新的增量備份,您可能無法復原儲存空間。較新的增量備份會依據已刪除增量備份中的資料,以及鏈結中較舊的備份。Spanner 會保留資料,只有在所有較新的增量備份過期時,才會釋出儲存空間。「可釋出空間」freeableSizeBytes
欄位會顯示刪除備份後可釋出的儲存空間大小。
定價
系統會根據備份在每個時間單位使用的儲存空間量計費。備份作業完成後即開始計費,直到備份刪除為止。備份建立完成後,系統會收取至少 24 小時的費用。如果您建立備份後立即刪除,系統仍會收取 24 小時的費用。
備份副本的儲存費用與原始備份相同。如果您在不同區域的兩個執行個體之間建立副本,系統會收取輸出資料移轉費用。
舉例來說,如果您將資料庫從來源多區域執行個體設定 nam7
複製到目的地多區域執行個體設定 nam-eur-asia3
,則適用下列費用:
- 重疊的
us-central1
區域不收費 - 見證
us-central2
區域不計費 - 跨洲資料移轉費用會套用兩次:一次是歐洲,一次是亞洲
- 在同一大洲的區域之間傳輸資料時,系統會針對
us-east1
收取一次費用 - 在同一大洲的區域之間傳輸資料 (僅限歐洲)
Spanner 會盡可能減少跨區域傳輸次數,以最佳化複製程序。這樣做有助於盡量減少資料傳輸成本,同時提供快速的副本備份體驗。
備份會分開儲存和計費。備份儲存空間不會影響資料庫儲存空間的帳單或資料庫儲存空間限制。詳情請參閱儲存空間使用率指標。
如需備份費用的完整資訊,請參閱 Spanner 定價。