這個頁面提供您應在從備份還原執行個體或執行時間點復原 (PITR) 前瞭解的資訊。
還原期間會發生什麼情況?
如果是 Cloud SQL Enterprise 版和 Cloud SQL Enterprise Plus 版,您可以從備份還原執行個體。您也可以跨不同版本的執行個體還原備份。
還原執行個體時,系統會將主要執行個體的下列資料還原至新執行個體:
- 資料庫
- 使用者
還原作業會導致執行個體重新啟動。
時間點復原 (PITR)
時間點復原 (PITR) 功能可協助您將執行個體復原至特定時間點。舉例來說,如果發生錯誤導致資料遺失,您可以將資料庫復原到錯誤發生前的狀態。
時間點復原一律會建立新的執行個體,您無法對現有的執行個體執行時間點復原。新的執行個體會繼承來源執行個體的設定,與複製作業類似。
在 Google Cloud 控制台中建立 Cloud SQL 執行個體時,系統預設會啟用 PITR。PITR 使用預先寫入記錄 (WAL) 封存。根據預設,Cloud SQL Enterprise Plus 版本執行個體會啟用 PITR。
如果您在啟用 PITR 前還原 Cloud SQL 執行個體的備份,將會遺失可供 PITR 使用的封存記錄。如果磁碟上的預先寫入記錄大小導致執行個體發生效能問題,請停用 PITR 並重新啟用。這項操作可確保新記錄儲存在 Cloud Storage 中,而不是磁碟上。如需執行 PITR 的逐步操作說明,請參閱「使用時間點復原 (PITR)」一文。
還原無法使用的執行個體
您可以使用 PITR 還原無法使用的 Cloud SQL 執行個體。PITR 通常提供五分鐘以內的復原點目標 (RPO)。
如果執行個體無法使用,您可以透過 API 查看執行個體可還原的最新時間,並將執行個體還原至該時間點。如果無法存取執行個體設定所在的可用區,您可以提供偏好的可用區值,將執行個體還原至其他主要或次要可用區。
假設 Cloud SQL 執行個體在美東時間下午 4 點無法使用。如果最近一次的復原時間是美東時間下午 3 點 55 分,您就可以將執行個體復原到這個時間點。
執行還原的一般訣竅
當您從備份還原執行個體時,無論是還原至相同或不同的執行個體,都請記住下列事項:
- 還原作業會覆寫目標執行個體上的所有資料。
- 目標執行個體在還原作業期間將會無法連線,現有的連線也會中斷。
- 如果要還原至有唯讀備用資源的執行個體,必須刪除所有備用資源,並在還原作業完成後重新建立。
- 還原作業會重新啟動執行個體。
如需執行還原的逐步操作說明,請參閱:
還原至不同執行個體的訣竅與需求
將備份還原至不同的執行個體時,請記住下列限制與最佳做法:
目標執行個體的資料庫版本必須與備份的來源執行個體資料庫版本相同。
Cloud SQL 一律會將目標執行個體的儲存空間容量,設為設定磁碟和備份磁碟大小的最大值。備份磁碟的大小是備份時磁碟的大小。
目標執行個體的儲存空間容量必須至少與備份執行個體的「容量」一樣大。使用的儲存空間量則沒有關係。您可以在控制台的 Cloud SQL 執行個體頁面中查看執行個體的儲存空間容量。
目標執行個體必須處於
RUNNABLE
狀態。目標執行個體的核心數或記憶體數量可以與備份的來源執行個體不同。
目標執行個體可以與來源執行個體位於不同地區。
服務中斷期間,您仍可擷取特定專案中的備份清單。請參閱「在服務中斷期間查看備份」。
還原費率限制
每個專案、每個區域的每個執行個體,每 30 分鐘最多可執行三項還原作業。如果還原作業失敗,不會計入這項配額。如果達到上限,作業會失敗,並顯示錯誤訊息,說明何時可以再次執行作業。
讓我們看看 Cloud SQL 如何對還原作業執行速率限制。
Cloud SQL 會使用 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 的一個 bucket (Bucket11A),以及專案 n 的一個 bucket (Bucket1nA)。
- 同樣地,Backup3 在 A 區域有兩個值區,可供還原作業使用。一個用於專案 1 (Bucket31A),另一個用於專案 n (Bucket3nA)。
- Backup3 在專案 1 的 B 區域中只有一個 bucket,因為相同目標專案和相同目標區域中的所有執行個體會共用一個 bucket。