這個頁面提供您在從備份還原執行個體或執行時間點復原 (PITR) 前,應先瞭解的資訊。
還原期間會發生什麼事?
還原執行個體時,主要執行個體中的下列資料會還原至新執行個體:
- 資料庫
- 使用者
還原作業會導致執行個體重新啟動。
時間點復原 (PITR)
時間點復原 (PITR) 可協助您將執行個體復原至特定時間點的狀態。舉例來說,如果因錯誤導致資料遺失,您可以將資料庫復原為錯誤發生前的狀態。
PITR 一律會建立新的執行個體,您無法對現有執行個體執行 PITR。新的執行個體會繼承來源執行個體的設定,類似複製建立的運作方式。
Cloud SQL 會使用交易記錄進行 PITR。如果您為執行個體啟用 PITR,然後從備份還原執行個體,Cloud SQL 會刪除交易記錄,讓您無法在還原的執行個體中使用 PITR。
如要確保執行個體的記錄儲存在 Cloud Storage 中,而不是磁碟上,請完成下列操作:
- 檢查執行個體的網路架構。如果執行個體採用舊版網路架構,請將其升級為新版網路架構。
- 如果磁碟上的記錄大小導致執行個體發生效能問題,請停用 PITR,然後重新啟用。
如需執行 PITR 的逐步操作說明,請參閱「使用時間點復原 (PITR)」一文。
還原無法使用的執行個體
您可以使用 PITR 還原無法使用的 Cloud SQL 執行個體。PITR 的復原點目標 (RPO) 通常為五分鐘或更短。
如果執行個體無法使用,您可以使用 API 查看可還原執行個體的最新時間,並在該時間執行復原作業。如果無法存取執行個體所在的可用區,您可以提供偏好可用區的值,將執行個體還原至其他主要或次要可用區。
假設 Cloud SQL 執行個體在美國東部標準時間下午 4 點無法使用。如果最晚復原時間是美國東部標準時間下午 3 點 55 分,您可以復原至這個時間。
執行還原的一般訣竅
當您從備份還原執行個體時,無論是還原至相同或不同的執行個體,都請記住下列事項:
- 還原作業會覆寫目標執行個體上的所有資料。
- 目標執行個體在還原作業期間將會無法連線,現有的連線也會中斷。
- 如果要還原至有唯讀備用資源的執行個體,必須刪除所有備用資源,並在還原作業完成後重新建立。
- 還原作業會重新啟動執行個體。
如需執行還原的逐步操作說明,請參閱:
還原至不同執行個體的訣竅與需求
將備份還原至不同的執行個體時,請記住下列限制與最佳做法:
目標執行個體的資料庫版本必須與備份的來源執行個體資料庫版本相同。
Cloud SQL 一律會將目標執行個體的儲存空間容量設為所設定磁碟和備份磁碟大小的最大值。備份磁碟是指備份時的磁碟大小。
目標執行個體的儲存空間容量必須至少與備份執行個體的「容量」一樣大。使用的儲存空間量則沒有關係。您可以在控制台的 Cloud SQL 執行個體頁面中查看執行個體的儲存空間容量。無論您是否要對單一資料庫執行 PITR,都必須遵守這項規定。
目標執行個體必須處於
RUNNABLE
狀態。目標執行個體的核心數或記憶體數量可以與備份的來源執行個體不同。
目標執行個體可以位於與來源執行個體不同的地區。
在服務中斷期間,您仍可擷取特定專案中的備份清單。請參閱「在服務中斷期間查看備份」。
還原頻率限制
每個專案的每個區域每個執行個體,最多每 30 分鐘可執行三項還原作業。如果還原作業失敗,系統不會將該作業計入此配額。如果達到上限,作業會失敗,並顯示錯誤訊息,說明何時可以再次執行作業。
讓我們來看看 Cloud SQL 如何執行還原作業的速率限制。
Cloud SQL 會使用儲存桶中的符記,判斷可同時執行多少還原作業。每個備份都有一個用於儲存每個目標專案和目標區域的值區。如果同一個專案的目標執行個體位於同一個區域,則會共用一個值區。每個值工具最多可使用三個符記來執行還原作業。每隔 10 分鐘,系統就會在值區中新增一個符記。如果值集已滿,權杖就會溢位。
每次發出還原作業時,系統就會從區塊中授予一個權杖。如果作業成功,系統就會從區塊中移除憑證。如果失敗,系統會將權杖傳回至儲存體。下圖說明這項功能的運作方式:
舉例來說,在下圖中,Backup1、Backup2 和 Backup3 是來自相同來源執行個體的備份。
- 每個備份 (Backup1、Backup2 和 Backup3) 都有自己的符記值區,用於指定區域 A 中 Project 1 的不同執行個體進行復原作業 (Bucket11A、Bucket21A 和 Bucket31A)。由於每個備份都有自己的儲存體,您每隔 30 分鐘就能將每個備份復原到同一個執行個體三次。
- 每個備份都有一個專案和區域的值區。舉例來說,如果某個區域有五個專案,則該區域會有五個備份資料夾,每個專案一個。在前述圖表中,區域 A 有兩個專案:專案 1 和專案 n。
- Backup1 有兩個值區,用於區域 A 的還原作業。一個專案 1 的值區 (Bucket11A),以及一個專案 n 的值區 (Bucket1nA)。
- 同樣地,Backup3 也有兩個值區,用於區域 A 的還原作業。一個專案 1 (Bucket31A) 和一個專案 n (Bucket3nA)。
- Backup3 在區域 B 中為 Project1 設有一個值區,因為同一個目標專案和目標區域中的所有執行個體都會共用一個值區。