無論主要 Cloud SQL 執行個體是否處於運作中或已刪除,您都可以使用時間點復原 (PITR) 功能還原執行個體。您可以使用 PITR 將執行個體還原至特定時間點。如果執行個體已刪除,您可以將執行個體還原至特定時間點,並還原至新的或現有的執行個體。
Cloud SQL 提供下列選項,可使用 PITR 還原執行個體:
如要在無法使用或已刪除的執行個體上執行 PITR,請找出最新和最早的復原時間。
執行 PITR
控制台
-
前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。
- 找到要復原的執行個體,開啟更多動作選單
,然後按一下「建立副本」。 - (選用) 在「建立副本」頁面中,更新新副本的 ID。
- 選取「從過去時間點複製資料」。
- 輸入 PITR 時間。
- 選取「所有資料庫」,或指定資料庫名稱。
如果指定資料庫名稱,則只能選取一個。 根據預設,PITR 適用於所有資料庫。 - 按一下 [建立本機複本]。
gcloud
使用 PITR 建立副本。
更改下列內容:
- SOURCE_INSTANCE_NAME:要還原的執行個體名稱。
- NEW_INSTANCE_NAME - 副本的名稱。
- TIMESTAMP - 來源執行個體的世界標準時間時區,格式為 RFC 3339。例如:2012-11-15T16:19:00.094Z。
gcloud sql instances clone SOURCE_INSTANCE_NAME \ NEW_INSTANCE_NAME \ --point-in-time 'TIMESTAMP'
REST v1
使用任何要求資料之前,請先修改下列項目的值:
- project-id:專案 ID
- target-instance-id:目標執行個體 ID
- source-instance-id:來源執行個體 ID
- restore-timestamp 最多可復原的時間點
在 JSON 要求中,您可以選擇指定最多一個特定資料庫名稱,如下所示:"databaseNames": "my-database"
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone
JSON 要求主體:
{
"cloneContext":
{
"kind": "sql#cloneContext",
"destinationInstanceName": "target-instance-id",
"pointInTime": "restore-timestamp"
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
REST v1beta4
使用任何要求資料之前,請先修改下列項目的值:
- project-id:專案 ID
- target-instance-id:目標執行個體 ID
- source-instance-id:來源執行個體 ID
- restore-timestamp 最多可復原的時間點
在 JSON 要求中,您可以選擇指定最多一個特定資料庫名稱,如下所示:"databaseNames": "my-database"
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone
JSON 要求主體:
{
"cloneContext":
{
"kind": "sql#cloneContext",
"destinationInstanceName": "target-instance-id",
"pointInTime": "restore-timestamp"
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
使用 backup vault 執行 PITR
如果 Cloud SQL 執行個體已啟用強化備份,您可以使用備份保存庫對執行個體執行時間點復原。
控制台
前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。
開啟要復原執行個體的更多動作選單
,然後按一下「建立副本」。選取「從過去時間點複製資料」。
輸入 PITR 時間。
按一下 [建立本機複本]。
gcloud
如要對備份保存庫中的執行個體執行 PITR,您需要找出最接近要執行 PITR 時間的備份 data-source。如要尋找備份,請參閱「列出執行個體備份保存庫中的所有備份」。找出備份後,請執行下列指令來執行 PITR:
gcloud sql instances point-in-time-restore DATA_SOURCE
PITR_TIMESTAMP
--project=TARGET_PROJECT
更改下列內容:
- DATA_SOURCE:最接近要復原時間點的備份
data-source路徑。 - PITR_TIMESTAMP:您要將執行個體還原至的時間點復原記錄來源執行個體的世界標準時間時間戳記,格式為 RFC 3339。例如:2012-11-15T16:19:00.094Z。
- TARGET_PROJECT:Cloud SQL 執行個體的專案 ID。
REST v1
REST v1beta4
對已刪除的執行個體執行 PITR
如要使用 PITR 復原已刪除的執行個體,您需要:
- 您要將執行個體還原至的時間點復原時間戳記 (
timestamp) - 目標執行個體名稱
- 來源執行個體遭刪除的時間 (
source-instance-deletion-time)
您只能使用 gcloud CLI 或 Cloud SQL API,對已刪除的執行個體執行 PITR。詳情請參閱「使用 PITR 還原已刪除的執行個體」。
gcloud
標準備份
找出 PITR 時間範圍
如要找出已刪除執行個體的 PITR 視窗,請取得執行個體的最早和最晚復原時間。您可以在這個視窗中選取任何時間戳記,執行 PITR。
尋找來源執行個體刪除作業
刪除執行個體後,系統會將 source-instance-deletion-time 和 log-retention-days 儲存在保留的備份中。如要查看已刪除執行個體的所有可用備份清單,請參閱「列出保留的備份」。
找出要使用的備份後,請使用 gcloud sql backups describe 指令取得 source-instance-deletion-time。
使用 PITR 還原
如要使用 PITR 還原已刪除的執行個體,請執行下列指令:
gcloud sql instances clone SOURCE_INSTANCE_NAME \
NEW_INSTANCE_NAME \
--point-in-time='PITR_TIMESTAMP' \
--source-instance-deletion-time=SOURCE_INSTANCE_DELETION_TIMESTAMP
更改下列內容:
SOURCE_INSTANCE_NAME:要還原的來源執行個體名稱。NEW_INSTANCE_NAME:新執行個體的名稱。PITR_TIMESTAMP:您要將執行個體還原至的時間點復原記錄來源執行個體的世界標準時間時間戳記,格式為 RFC 3339。例如:2012-11-15T16:19:00.094Z。SOURCE_INSTANCE_DELETION_TIMESTAMP:來源執行個體遭刪除時的世界標準時間時間戳記,採用 RFC 3339 格式。例如:2012-11-15T16:19:00.094Z。
進階級備份
找出 PITR 時間範圍
如要找出已刪除執行個體的 PITR 視窗,請取得執行個體的最早和最晚復原時間。您可以在這個視窗中選取任何時間戳記,執行 PITR。
找出資料來源
刪除執行個體後,系統會將該執行個體的資料來源與保留的備份資料一併儲存。如要尋找已刪除執行個體的這些值,請參閱「列出執行個體備份保存庫中的所有備份」。
使用 PITR 還原
如要使用 PITR 還原已刪除的執行個體,請執行下列指令:
gcloud sql instances point-in-time-restore DATA_SOURCE \
--point-in-time='PITR_TIMESTAMP' \
--project='TARGET_PROJECT' \
更改下列內容:
DATA_SOURCE:最接近要復原時間點的備份data-source路徑。PITR_TIMESTAMP:您要將執行個體還原至的時間點復原記錄來源執行個體的世界標準時間時間戳記,格式為 RFC 3339。例如: 2012-11-15T16:19:00.094Z。TARGET_PROJECT:Cloud SQL 執行個體的專案 ID。
REST v1
找出 PITR 時間範圍
如要找出已刪除執行個體的 PITR 視窗,請取得執行個體的最早和最晚復原時間。您可以在這個視窗中選取任何時間戳記,執行 PITR。
找出來源執行個體的刪除時間和記錄保留天數
刪除執行個體後,系統會將 source-instance-deletion-time 和 log-retention-days 儲存在保留的備份中。如要找出已刪除執行個體的這些值,請參閱「列出保留的備份」。
使用 PITR 還原
使用任何要求資料之前,請先修改下列項目的值:
- project-id:專案 ID
- target-instance-id:目標執行個體 ID
- source-instance-id:來源執行個體 ID
- source-instance-deletion-time:來源執行個體的刪除時間
- restore-timestamp 要還原執行個體的時間點
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/source-instance-id/clone
JSON 要求主體:
{
"cloneContext":
{
"kind": "sql#cloneContext",
"destinationInstanceName": "target-instance-id",
"sourceInstanceDeletionTime: "source-instance-deletion-time",
"pointInTime": "restore-timestamp"
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
REST v1beta4
找出 PITR 視窗
如要找出已刪除執行個體的 PITR 視窗,請取得執行個體的最早和最晚復原時間。您可以在這個視窗中選取任何時間戳記,執行 PITR。
找出來源執行個體的刪除時間和記錄保留天數
刪除執行個體後,系統會將已刪除執行個體的 source-instance-deletion-time 和 log-retention-days 與保留的執行個體備份資料一併儲存。如要找出已刪除執行個體的這些值,請參閱「列出保留的備份」。
使用 PITR 還原
使用任何要求資料之前,請先修改下列項目的值:
- project-id:專案 ID
- target-instance-id:目標執行個體 ID
- source-instance-id:來源執行個體 ID
- source-instance-deletion-time:來源執行個體的刪除時間
- restore-timestamp 您要還原執行個體的時間點
在 JSON 要求中,您可以選擇指定最多一個特定資料庫名稱,如下所示:"databaseNames": "my-database"
HTTP 方法和網址:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/source-instance-id/clone
JSON 要求主體:
{
"cloneContext":
{
"kind": "sql#cloneContext",
"destinationInstanceName": "target-instance-id",
"sourceInstanceDeletionTime: "source-instance-deletion-time",
"pointInTime": "restore-timestamp"
}
}
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
取得最早和最晚的復原時間
對於可用的執行個體,您可以對執行個體時間點復原視窗中的任何時間戳記執行時間點復原。時間點復原作業的時間範圍從最早復原時間開始,最晚復原時間結束。如果執行個體無法使用,且執行個體記錄儲存在 Cloud Storage 中,或是執行個體已刪除且已啟用時間點復原保留功能,則您可以擷取最早和最晚的復原時間,並對該時間範圍內的任何時間戳記執行時間點復原。在所有情況下,您都可以提供偏好的區域值,將執行個體還原至其他主要或次要區域。
gcloud
無法使用的執行個體
如要取得最早和最晚可復原的 Cloud SQL 執行個體時間 (不適用於可用的執行個體),請執行下列指令:
gcloud sql instances get-latest-recovery-time INSTANCE_NAME
更改下列內容:
INSTANCE_NAME:要查詢最新復原時間的執行個體名稱。
已刪除執行個體
如要取得可還原 Cloud SQL 刪除執行個體的最早和最晚時間,請執行下列指令:
gcloud sql instances get-latest-recovery-time INSTANCE_NAME
--source-instance-deletion-time='SOURCE_INSTANCE_DELETION_TIMESTAMP'
更改下列內容:
INSTANCE_NAME:要查詢最新復原時間的執行個體名稱。SOURCE_INSTANCE_DELETION_TIMESTAMP:來源執行個體遭刪除時的世界標準時間時間戳記,採用 RFC 3339 格式。例如:2012-11-15T16:19:00.094Z。
REST v1
無法使用的執行個體
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:專案 ID
- INSTANCE_NAME:您要查詢最新復原時間的執行個體名稱
HTTP 方法和網址:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME/getLatestRecoveryTime
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#getLatestRecoveryTime",
"earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
"latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}
已刪除執行個體
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:專案 ID
- INSTANCE_NAME:要查詢最新復原時間的來源執行個體名稱
- SOURCE_INSTANCE_DELETION_TIME:來源執行個體的刪除時間
HTTP 方法和網址:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME/getLatestRecoveryTime
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#getLatestRecoveryTime",
"earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
"latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}
REST v1beta4
無法使用的執行個體
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:專案 ID
- INSTANCE_NAME:您要查詢最新復原時間的執行個體名稱
HTTP 方法和網址:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME/getLatestRecoveryTime
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#getLatestRecoveryTime",
"earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
"latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}
已刪除執行個體
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:專案 ID
- INSTANCE_NAME:要查詢最新復原時間的來源執行個體名稱
- SOURCE_INSTANCE_DELETION_TIME:來源執行個體的刪除時間
HTTP 方法和網址:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME/getLatestRecoveryTime
請展開以下其中一個選項,以傳送要求:
您應該會收到如下的 JSON 回覆:
{
"kind": "sql#getLatestRecoveryTime",
"earliestRecoveryTime": "2023-06-10T17:23:59.648821586Z",
"latestRecoveryTime": "2023-06-20T17:23:59.648821586Z"
}
疑難排解
| 問題 | 疑難排解 |
|---|---|
|
或
|
您提供的时间戳记无效。 |
|
或
|
您提供時間戳記的時間點無法找到備份或 binlog 座標。 |
後續步驟
- 在副本上設定旗標